Codebase list gtkwave / 3b54b6e
Imported Upstream version 3.3.102 أحمد المحمودي (Ahmed El-Mahmoudy) 4 years ago
10 changed file(s) with 233 addition(s) and 53 deletion(s). Raw diff Collapse all Expand all
17081708 of 10 roundoff errors.
17091709 Remove register keyword where applicable as is deprecated.
17101710 Added --saveonexit gtkwave command line option.
1711 3.3.102 21sep19 Remove redundant TREE_VHDL_ST_PACKAGE from SST exclude.
1712 Added addCommentTracesFromList tcl command from user patch.
1713 Harden savefile loader for missing group start on vectors.
1714 Preliminary VHDL support for wlf2vcd.
1715 Add missing return value checks on mmap() in FST writer.
00 ##########################################################################
11
2 GTKWave 3.3.101 Wave Viewer is Copyright (C) 1999-2019 Tony Bybell.
2 GTKWave 3.3.102 Wave Viewer is Copyright (C) 1999-2019 Tony Bybell.
33 Portions of GTKWave are Copyright (C) 1999-2019 Udi Finkelstein.
44 Context support is Copyright (C) 2007-2019 Kermin Elliott Fleming.
55 Trace group support is Copyright (C) 2009-2019 Donald Baltus.
00 #! /bin/sh
11 # Guess values for system-dependent variables and create Makefiles.
2 # Generated by GNU Autoconf 2.69 for gtkwave 3.3.101.
2 # Generated by GNU Autoconf 2.69 for gtkwave 3.3.102.
33 #
44 # Report bugs to <bybell@rocketmail.com>.
55 #
579579 # Identity of this package.
580580 PACKAGE_NAME='gtkwave'
581581 PACKAGE_TARNAME='gtkwave'
582 PACKAGE_VERSION='3.3.101'
583 PACKAGE_STRING='gtkwave 3.3.101'
582 PACKAGE_VERSION='3.3.102'
583 PACKAGE_STRING='gtkwave 3.3.102'
584584 PACKAGE_BUGREPORT='bybell@rocketmail.com'
585585 PACKAGE_URL=''
586586
14041404 # Omit some internal or obsolete options to make the list less imposing.
14051405 # This message is too long to be a string in the A/UX 3.1 sh.
14061406 cat <<_ACEOF
1407 \`configure' configures gtkwave 3.3.101 to adapt to many kinds of systems.
1407 \`configure' configures gtkwave 3.3.102 to adapt to many kinds of systems.
14081408
14091409 Usage: $0 [OPTION]... [VAR=VALUE]...
14101410
14701470
14711471 if test -n "$ac_init_help"; then
14721472 case $ac_init_help in
1473 short | recursive ) echo "Configuration of gtkwave 3.3.101:";;
1473 short | recursive ) echo "Configuration of gtkwave 3.3.102:";;
14741474 esac
14751475 cat <<\_ACEOF
14761476
16291629 test -n "$ac_init_help" && exit $ac_status
16301630 if $ac_init_version; then
16311631 cat <<\_ACEOF
1632 gtkwave configure 3.3.101
1632 gtkwave configure 3.3.102
16331633 generated by GNU Autoconf 2.69
16341634
16351635 Copyright (C) 2012 Free Software Foundation, Inc.
22732273 This file contains any messages produced by compilers while
22742274 running configure, to aid debugging if configure makes a mistake.
22752275
2276 It was created by gtkwave $as_me 3.3.101, which was
2276 It was created by gtkwave $as_me 3.3.102, which was
22772277 generated by GNU Autoconf 2.69. Invocation command line was
22782278
22792279 $ $0 $@
31403140
31413141 # Define the identity of the package.
31423142 PACKAGE='gtkwave'
3143 VERSION='3.3.101'
3143 VERSION='3.3.102'
31443144
31453145
31463146 cat >>confdefs.h <<_ACEOF
1149811498 # report actual input values of CONFIG_FILES etc. instead of their
1149911499 # values after options handling.
1150011500 ac_log="
11501 This file was extended by gtkwave $as_me 3.3.101, which was
11501 This file was extended by gtkwave $as_me 3.3.102, which was
1150211502 generated by GNU Autoconf 2.69. Invocation command line was
1150311503
1150411504 CONFIG_FILES = $CONFIG_FILES
1156411564 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
1156511565 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
1156611566 ac_cs_version="\\
11567 gtkwave config.status 3.3.101
11567 gtkwave config.status 3.3.102
1156811568 configured by $0, generated by GNU Autoconf 2.69,
1156911569 with options \\"\$ac_cs_config\\"
1157011570
11 # Process this file with autoconf to produce a configure script.
22
33 AC_PREREQ(2.59)
4 AC_INIT(gtkwave, 3.3.101, bybell@rocketmail.com)
4 AC_INIT(gtkwave, 3.3.102, bybell@rocketmail.com)
55 AC_CONFIG_SRCDIR([src/vcd.c])
66 AM_INIT_AUTOMAKE
77 AC_CONFIG_HEADER([config.h])
1616
1717 /* definition of WlfVreg from wlf_api.h */
1818 #define WLF2VCD_MVL4 "01zx"
19 #define WLF2VCD_MVL9 "ux01zwlh-"
20 static const char *wlf_mvl9[9] = {"'U'", "'X'", "'0'", "'1'", "'Z'", "'W'", "'L'", "'H'", "'-'"};
1921
2022 typedef struct WlfGlobalContext
2123 {
3032 unsigned int max_bits;
3133 unsigned int num_aliases;
3234
35 unsigned is_vhdl : 1;
36
3337 unsigned char *value_string;
3438 int *archive_number;
3539 WlfSymbolId *archive_sym;
4044 static void AddSymbolToCB(
4145 WlfSymbolId sym,
4246 unsigned int vcdid,
43 unsigned int num_bits,
47 int num_bits,
4448 unsigned int is_real,
4549 unsigned int is_vbit,
50 unsigned int is_vhbit,
4651 unsigned int is_vreg
4752 );
4853
5762 unsigned int num_bits;
5863 unsigned is_real : 1;
5964 unsigned is_vbit : 1;
65 unsigned is_vhbit : 1;
6066 unsigned is_vreg : 1;
6167 } cbData;
6268
107113 WlfIterId iter;
108114 WlfSymbolId sym;
109115 int cnt;
116 WlfDataType vtyp;
110117
111118 /* create an iterator to retrieve children of top */
112119 iter = wlfSymChildren64(top, wlfSelAll);
118125 cnt = wlfSymPropInt(sym, WLF_PROP_SUBELEMENT_COUNT);
119126 WlfSymbolSel64 typ = wlfSymPropSymbolSel64(sym, WLF_PROP_SYMBOL_TYPE);
120127
128 if(typ & wlfSelVhdlScopes)
129 {
130 wgc.is_vhdl = 1;
131 }
132
121133 if(typ & (wlfSelVhdlScopes | wlfSelVlogScopes))
122134 {
123135 wgc.num_scopes++;
125137 else
126138 {
127139 WlfTypeId wid = wlfSymPropTypeId(sym, WLF_PROP_TYPE_ID);
128 WlfDataType vtyp = wlfTypePropDataType(wid, WLF_TYPE_TYPE);
129
140 vtyp = wlfTypePropDataType(wid, WLF_TYPE_TYPE);
141
142 if(vtyp == wlfTypeRecord)
143 {
144 // fprintf(stderr, "wlfTypeRecord %d\n", cnt);
145 wgc.num_scopes++;
146 }
147 else
130148 if(vtyp != wlfTypeArray) /* still possibly have to recurse */
131149 {
132150 int rgh = wlfTypePropInt(wid, WLF_TYPE_ARRAY_RIGHT);
133151 int lft = wlfTypePropInt(wid, WLF_TYPE_ARRAY_LEFT);
134152 int len = wlfTypePropInt(wid, WLF_TYPE_ARRAY_LENGTH);
135153
154 if(vtyp == wlfTypeScalar)
155 {
156 lft = 31; rgh = 0; len = 32;
157 }
158
136159 wgc.num_symbols++;
137160 if(len > wgc.max_bits) wgc.max_bits = len;
138161 }
139162 }
140163
141 /* recurse through the children, but block out bitblasted children */
142 if(cnt<=0)
164 /* recurse through the children, but block out bitblasted children (except vhdl) */
165 if((cnt<=0) || (wgc.is_vhdl))
143166 {
144167 countSubElements(sym);
145168 }
266289
267290 unsigned int is_real = 0;
268291 unsigned int is_vbit = 0;
292 unsigned int is_vhbit = 0;
269293 unsigned int num_bits = 0;
270294 unsigned int is_vreg = 0;
271295 char *vartype = NULL;
311335 case wlfSelNamedEvent: vartype = "event"; break;
312336
313337 /* wlfSelHdlSignals */
314 case wlfSelSignal:
338 case wlfSelSignal: vartype = "wire"; break;
315339 break;
316340
317341 case wlfSelNet: vartype = "wire"; break;
322346 case wlfSelGeneric:
323347 case wlfSelAlias:
324348
325 default: break;
349 default: fprintf(stderr, "Type: %d\n", typ); exit(255);
350 break;
326351 }
327352
328353 WlfModeSel ptyp = wlfSymPropModeSel(sym, WLF_PROP_PORT_TYPE);
332357 {
333358 wgc.prev_hier[wgc.prev_hier_len - 1] = 0;
334359 char *pmod = strrchr(wgc.prev_hier, '/');
360 char *dmod = strrchr(wgc.prev_hier, '.');
361 if(dmod && (dmod - pmod > 0)) pmod = dmod;
335362 *(pmod + 1) = 0;
336363 wgc.prev_hier_len = pmod - wgc.prev_hier + 1;
337364
338365 printf("$upscope $end\n");
339366 }
340367
341 if(typ & (wlfSelVhdlScopes | wlfSelVlogScopes))
368 WlfTypeId wid = wlfSymPropTypeId(sym, WLF_PROP_TYPE_ID);
369 WlfDataType vtyp = wlfTypePropDataType(wid, WLF_TYPE_TYPE);
370
371 if((typ & (wlfSelVhdlScopes | wlfSelVlogScopes)) || (vtyp == wlfTypeRecord))
342372 {
343373 char *ls = strrchr(name, '/');
374 char *ds = strrchr(name, '.');
375 if(ds && (ds - ls > 0)) ls = ds;
376
344377 char *sname = ls ? (ls+1) : name;
345378 printf("$scope %s %s $end\n", scopetype, sname);
346379
352385 int hlen = strlen(name);
353386 wgc.prev_hier = malloc(hlen + 1 + 1);
354387 memcpy(wgc.prev_hier, name, hlen);
355 wgc.prev_hier[hlen] = '/';
388 wgc.prev_hier[hlen] = (vtyp == wlfTypeRecord) ? '.' : '/';
356389 wgc.prev_hier[(wgc.prev_hier_len = hlen + 1)] = 0;
357390 }
358391 else
359392 {
360 WlfTypeId wid = wlfSymPropTypeId(sym, WLF_PROP_TYPE_ID);
361 WlfDataType vtyp = wlfTypePropDataType(wid, WLF_TYPE_TYPE);
362
363393 if(vtyp != wlfTypeArray) /* still possibly have to recurse, depends on value of cnt below */
364394 {
365395 int rgh = wlfTypePropInt(wid, WLF_TYPE_ARRAY_RIGHT);
366396 int lft = wlfTypePropInt(wid, WLF_TYPE_ARRAY_LEFT);
367397 int len = wlfTypePropInt(wid, WLF_TYPE_ARRAY_LENGTH);
398
399 if(vtyp == wlfTypeScalar)
400 {
401 lft = 31; rgh = 0; len = 32;
402 is_vbit = 1; is_vhbit = 0; is_real = 0; is_vreg = 0;
403 }
404
405 if(vtyp == wlfTypeEnum)
406 {
407 char **enumLiterals;
408 int i, count;
409 wlfEnumLiterals(wid, &enumLiterals, &count);
410 if(count == 9)
411 {
412 for(i=0;i<9;i++)
413 {
414 if(strcmp(enumLiterals[i], wlf_mvl9[i]))
415 {
416 break;
417 }
418 }
419 if(i == 9)
420 {
421 is_vhbit = 1;
422 is_vbit = 0;
423 lft = rgh = 0;
424 len = 1;
425 }
426 }
427 }
368428
369429 if((is_real) || (vtyp == wlfTypeReal) || (vtyp == wlfTypeVlogReal))
370430 {
386446
387447 if(!vcdid)
388448 {
389 AddSymbolToCB(sym, ++wgc.vcdid_added, num_bits = len, is_real, is_vbit, is_vreg);
449 AddSymbolToCB(sym, ++wgc.vcdid_added, num_bits = len, is_real, is_vbit, is_vhbit, is_vreg);
390450 vcdid = wgc.vcdid_added;
391451 if(arch >= 0)
392452 {
405465 wgc.num_aliases++;
406466 }
407467
408 if((lft != rgh) && (!is_vbit) && (!is_real))
409 {
410 printf("$var %s %d %s %s [%d:%d] $end\n", vartype, len, genVcdID(vcdid_str, vcdid), strrchr(name, '/')+1, lft, rgh);
411 }
412 else
413 {
414 if(cnt && (!is_vbit) && (!is_real))
468 char *rsl = strrchr(name, '.');
469 if(!rsl) rsl = strrchr(name, '/');
470
471 char *lp = strrchr(rsl, '(');
472 char *rp = strrchr(rsl, ')');
473 char *lp2 = NULL, *rp2 = NULL;
474 if(lp && rp)
475 {
476 *lp = '['; *rp = ']';
477
478 lp2 = strrchr(rsl, '(');
479 rp2 = strrchr(rsl, ')');
480 if(lp2 && rp2)
415481 {
416 printf("$var %s %d %s %s [%d] $end\n", vartype, len, genVcdID(vcdid_str, vcdid), strrchr(name, '/')+1, lft);
482 *lp2 = '['; *rp2 = ']';
417483 }
418484 else
419485 {
420 printf("$var %s %d %s %s $end\n", vartype, len, genVcdID(vcdid_str, vcdid), strrchr(name, '/')+1);
486 lp2 = rp2 = NULL;
421487 }
422488 }
489
490 if((lft != rgh) && (!is_vbit) && (!is_real))
491 {
492 printf("$var %s %d %s %s [%d:%d] $end\n", vartype, len, genVcdID(vcdid_str, vcdid), rsl+1, lft, rgh);
493 }
494 else
495 {
496 if(cnt && (!is_vbit) && (!is_real))
497 {
498 printf("$var %s %d %s %s [%d] $end\n", vartype, len, genVcdID(vcdid_str, vcdid), rsl+1, lft);
499 }
500 else
501 {
502 printf("$var %s %d %s %s $end\n", vartype, len, genVcdID(vcdid_str, vcdid), rsl+1);
503 }
504 }
505
506 if(lp && rp)
507 {
508 *lp = '('; *rp = ')';
509 }
510 if(lp2 && rp2)
511 {
512 *lp2 = '('; *rp2 = ')';
513 }
423514 }
424515 }
425516
426 /* recurse through the children, but block out bitblasted children */
427 if(cnt<=0)
517 /* recurse through the children, but block out bitblasted children (except vhdl) */
518 if((cnt<=0) || (wgc.is_vhdl))
428519 {
429520 printSubElements(sym);
430521 }
489580 unsigned char *pv = ((cbData*) data)->pv;
490581 char *value = wgc.value_string;
491582
492 if(((cbData*) data)->is_vbit)
583 if(((cbData*) data)->is_vhbit)
584 {
585 for(i=0;i<nbits;i++)
586 {
587 value[i] = WLF2VCD_MVL9[*(pv++)];
588 }
589 value[i] = 0;
590 }
591 else if(((cbData*) data)->is_vbit)
493592 {
494593 WlfVbit *ip = (WlfVbit *)pv;
495594 int bitrvs = (nbits - 1);
645744 static void AddSymbolToCB(
646745 WlfSymbolId sym,
647746 unsigned int vcdid,
648 unsigned int num_bits,
747 int num_bits,
649748 unsigned int is_real,
650749 unsigned int is_vbit,
750 unsigned int is_vhbit,
651751 unsigned int is_vreg
652752 )
653753 {
663763 pdata->pv = wlfValueGetValue(val);
664764 #endif
665765 pdata->vcdid = vcdid;
666 pdata->num_bits = num_bits;
766 pdata->num_bits = (num_bits < 0) ? 0 : num_bits; // ?? how to fix properly
667767 pdata->is_real = is_real;
668768 pdata->is_vbit = is_vbit;
769 pdata->is_vhbit = is_vhbit;
669770 pdata->is_vreg = is_vreg;
670771 status = wlfAddSignalEventCB(wgc.pack, sym, val, WLF_REQUEST_POSTPONED, sigCb, pdata);
671772 if(status != WLF_OK)
692793 wgc.prev_hier = NULL;
693794 wgc.prev_hier_len = 0;
694795 wgc.vcdid_added = 0;
796 wgc.is_vhdl = 0;
695797
696798 if(argc < 2)
697799 {
Binary diff not shown
4141 #include "fstapi.h"
4242 #include "fastlz.h"
4343 #include "lz4.h"
44 #include <errno.h>
4445
4546 #ifndef HAVE_LIBPTHREAD
4647 #undef FST_WRITER_PARALLEL
951952 /*
952953 * mmap functions
953954 */
955 static void fstWriterMmapSanity(void *pnt, const char *file, int line, const char *usage)
956 {
957 if(pnt == MAP_FAILED)
958 {
959 fprintf(stderr, "fstMmap() assigned to %s failed: errno: %d, file %s, line %d.\n", usage, errno, file, line);
960 perror("Why");
961 pnt = NULL;
962 }
963 }
964
965
954966 static void fstWriterCreateMmaps(struct fstWriterContext *xc)
955967 {
956968 off_t curpos = ftello(xc->handle);
973985 if(!xc->valpos_mem)
974986 {
975987 fflush(xc->valpos_handle);
976 xc->valpos_mem = (uint32_t *)fstMmap(NULL, xc->maxhandle * 4 * sizeof(uint32_t), PROT_READ|PROT_WRITE, MAP_SHARED, fileno(xc->valpos_handle), 0);
988 errno = 0;
989 if(xc->maxhandle)
990 {
991 fstWriterMmapSanity(xc->valpos_mem = (uint32_t *)fstMmap(NULL, xc->maxhandle * 4 * sizeof(uint32_t), PROT_READ|PROT_WRITE, MAP_SHARED, fileno(xc->valpos_handle), 0), __FILE__, __LINE__, "xc->valpos_mem");
992 }
977993 }
978994 if(!xc->curval_mem)
979995 {
980996 fflush(xc->curval_handle);
981 xc->curval_mem = (unsigned char *)fstMmap(NULL, xc->maxvalpos, PROT_READ|PROT_WRITE, MAP_SHARED, fileno(xc->curval_handle), 0);
997 errno = 0;
998 if(xc->maxvalpos)
999 {
1000 fstWriterMmapSanity(xc->curval_mem = (unsigned char *)fstMmap(NULL, xc->maxvalpos, PROT_READ|PROT_WRITE, MAP_SHARED, fileno(xc->curval_handle), 0), __FILE__, __LINE__, "xc->curval_handle");
1001 }
9821002 }
9831003 }
9841004
16811701 tlen = ftello(xc->tchn_handle);
16821702 fstWriterFseeko(xc, xc->tchn_handle, 0, SEEK_SET);
16831703
1684 tmem = (unsigned char *)fstMmap(NULL, tlen, PROT_READ|PROT_WRITE, MAP_SHARED, fileno(xc->tchn_handle), 0);
1704 errno = 0;
1705 fstWriterMmapSanity(tmem = (unsigned char *)fstMmap(NULL, tlen, PROT_READ|PROT_WRITE, MAP_SHARED, fileno(xc->tchn_handle), 0), __FILE__, __LINE__, "tmem");
16851706 if(tmem)
16861707 {
16871708 unsigned long destlen = tlen;
18731894
18741895 if(xc && !xc->already_in_close && !xc->already_in_flush)
18751896 {
1876 unsigned char *tmem;
1897 unsigned char *tmem = NULL;
18771898 off_t fixup_offs, tlen, hlen;
18781899
18791900 xc->already_in_close = 1; /* never need to zero this out as it is freed at bottom */
19111932 /* write out geom section */
19121933 fflush(xc->geom_handle);
19131934 tlen = ftello(xc->geom_handle);
1914 tmem = (unsigned char *)fstMmap(NULL, tlen, PROT_READ|PROT_WRITE, MAP_SHARED, fileno(xc->geom_handle), 0);
1935 errno = 0;
1936 if(tlen)
1937 {
1938 fstWriterMmapSanity(tmem = (unsigned char *)fstMmap(NULL, tlen, PROT_READ|PROT_WRITE, MAP_SHARED, fileno(xc->geom_handle), 0), __FILE__, __LINE__, "tmem");
1939 }
1940
19151941 if(tmem)
19161942 {
19171943 unsigned long destlen = tlen;
20192045 {
20202046 int lz4_maxlen;
20212047 unsigned char *mem;
2022 unsigned char *hmem;
2048 unsigned char *hmem = NULL;
20232049 int packed_len;
20242050
20252051 fflush(xc->handle);
20262052
20272053 lz4_maxlen = LZ4_compressBound(xc->hier_file_len);
20282054 mem = (unsigned char *)malloc(lz4_maxlen);
2029 hmem = (unsigned char *)fstMmap(NULL, xc->hier_file_len, PROT_READ|PROT_WRITE, MAP_SHARED, fileno(xc->hier_handle), 0);
2055 errno = 0;
2056 if(xc->hier_file_len)
2057 {
2058 fstWriterMmapSanity(hmem = (unsigned char *)fstMmap(NULL, xc->hier_file_len, PROT_READ|PROT_WRITE, MAP_SHARED, fileno(xc->hier_handle), 0), __FILE__, __LINE__, "hmem");
2059 }
20302060 packed_len = LZ4_compress((char *)hmem, (char *)mem, xc->hier_file_len);
20312061 fstMunmap(hmem, xc->hier_file_len);
20322062
994994 char *prefix, *suffix, *new;
995995 char *prefix_init, *w2_init;
996996 unsigned int mode;
997 int current_grp_depth = -1;
997998
998999 if(!(len=strlen(w))) return(0);
9991000 if(*(w+len-1)=='\n')
12481249
12491250 b = maketyp ? makevec(prefix+1,w2) : makevec_annotated(prefix+1,w2); /* '#' vs ':' cases... */
12501251
1252 if(GLOBALS->default_flags&TR_GRP_BEGIN_B) { current_grp_depth = GLOBALS->group_depth; }
1253
12511254 if(b)
12521255 {
12531256 if((v=bits2vector(b)))
12561259 AddVector(v, alias);
12571260 free_2(b->name);
12581261 b->name=NULL;
1259 return(v!=NULL);
1262 goto grp_bot;
12601263 }
12611264 else
12621265 {
13111314 }
13121315 }
13131316
1317 grp_bot:
1318 if((GLOBALS->default_flags&TR_GRP_BEGIN_B) && (current_grp_depth >= 0) && (current_grp_depth == GLOBALS->group_depth)) { AddBlankTrace(prefix+1); }
13141319 return(v!=NULL);
13151320 }
13161321 else
11671167 return(TCL_OK);
11681168 }
11691169
1170 static int gtkwavetcl_addCommentTracesFromList(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
1171 {
1172 char reportString[33];
1173 Tcl_Obj *aobj;
1174
1175 if(objc==2)
1176 {
1177 char *s = Tcl_GetString(objv[1]);
1178 char** elem = NULL;
1179 int i, l = 0;
1180
1181 elem = zSplitTclList(s, &l);
1182 if(elem)
1183 {
1184 for(i=0;i<l;i++)
1185 {
1186 InsertBlankTrace(elem[i], 0);
1187 }
1188 free_2(elem);
1189 }
1190
1191 GLOBALS->signalwindow_width_dirty=1;
1192 MaxSignalLength();
1193 signalarea_configure_event(GLOBALS->signalarea, NULL);
1194 wavearea_configure_event(GLOBALS->wavearea, NULL);
1195
1196 sprintf(reportString, "%d", l);
1197
1198 aobj = Tcl_NewStringObj(reportString, -1);
1199 Tcl_SetObjResult(interp, aobj);
1200 }
1201 else
1202 {
1203 return(gtkwavetcl_badNumArgs(clientData, interp, objc, objv, 1));
1204 }
1205
1206 return(TCL_OK);
1207 }
11701208
11711209 static int gtkwavetcl_addSignalsFromList(ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
11721210 {
22432281
22442282 tcl_cmdstruct gtkwave_commands[] =
22452283 {
2284 {"addCommentTracesFromList", gtkwavetcl_addCommentTracesFromList},
22462285 {"addSignalsFromList", gtkwavetcl_addSignalsFromList},
22472286 {"deleteSignalsFromList", gtkwavetcl_deleteSignalsFromList},
22482287 {"deleteSignalsFromListIncludingDuplicates", gtkwavetcl_deleteSignalsFromListIncludingDuplicates},
22942333 {"installFileFilter", gtkwavetcl_installFileFilter},
22952334 {"installProcFilter", gtkwavetcl_installProcFilter},
22962335 {"installTransFilter", gtkwavetcl_installTransFilter},
2336 {"loadFile", gtkwavetcl_loadFile},
22972337 {"nop", gtkwavetcl_nop},
2338 {"presentWindow", gtkwavetcl_presentWindow},
2339 {"processTclList", gtkwavetcl_processTclList}, /* not for general-purpose use */
2340 {"reLoadFile", gtkwavetcl_reLoadFile},
22982341 {"setBaselineMarker", gtkwavetcl_setBaselineMarker},
22992342 {"setCurrentTranslateEnums", gtkwavetcl_setCurrentTranslateEnums},
23002343 {"setCurrentTranslateFile", gtkwavetcl_setCurrentTranslateFile},
23122355 {"setWindowStartTime", gtkwavetcl_setWindowStartTime},
23132356 {"setZoomFactor", gtkwavetcl_setZoomFactor},
23142357 {"setZoomRangeTimes", gtkwavetcl_setZoomRangeTimes},
2315 {"loadFile", gtkwavetcl_loadFile},
2316 {"reLoadFile", gtkwavetcl_reLoadFile},
2317 {"presentWindow", gtkwavetcl_presentWindow},
23182358 {"showSignal", gtkwavetcl_showSignal},
2359 {"signalChangeList", gtkwavetcl_signalChangeList}, /* changed from signal_change_list for consistency! */
23192360 {"unhighlightSignalsFromList", gtkwavetcl_unhighlightSignalsFromList},
2320 {"signalChangeList", gtkwavetcl_signalChangeList}, /* changed from signal_change_list for consistency! */
2321 {"processTclList", gtkwavetcl_processTclList}, /* not for general-purpose use */
23222361 {"", NULL} /* sentinel */
23232362 };
23242363
11201120 else if(!strcmp(p, "VHDL_ST_GENFOR")) { exclhier |= exclone << TREE_VHDL_ST_GENFOR; }
11211121 else if(!strcmp(p, "VHDL_ST_INSTANCE")) { exclhier |= exclone << TREE_VHDL_ST_INSTANCE; }
11221122 else if(!strcmp(p, "VHDL_ST_PACKAGE")) { exclhier |= exclone << TREE_VHDL_ST_PACKAGE; }
1123 else if(!strcmp(p, "VHDL_ST_PACKAGE")) { exclhier |= exclone << TREE_VHDL_ST_PACKAGE; }
11241123
11251124 else if(!strcmp(p, "VHDL_ST_SIGNAL")) { exclhier |= exclone << TREE_VHDL_ST_SIGNAL; }
11261125 else if(!strcmp(p, "VHDL_ST_PORTIN")) { exclhier |= exclone << TREE_VHDL_ST_PORTIN; }