Imported Upstream version 3.3.100
أحمد المحمودي (Ahmed El-Mahmoudy)
5 years ago
1690 | 1690 | Fix on vtype()/vtype2() to detect 'x' and make the coloration |
1691 | 1691 | red on newly-displayed traces. (Bug new from Dinotrace-like |
1692 | 1692 | rendering in 3.3.96.) |
1693 | 3.3.98 27nov18 Removed pccts and vermin. Use xml2stems instead. | |
1693 | 3.3.98 27dec18 Removed pccts and vermin. Use xml2stems instead. | |
1694 | 3.3.99 09feb19 Added visible single bit glitches as a yellow dot (if enabled | |
1695 | with --rcvar 'vcd_preserve_glitches on'). | |
1696 | Fixed print routine broken by bsearch_trunc() optimization in | |
1697 | version 3.3.96. | |
1698 | 3.3.100 20mar19 FSDB fix for variable declarations of array of reals. | |
1699 | Added Real, Time, Enum, and Popcnt flags to Edit/Show-Change. | |
1700 | Ensure Show-Change regenerates analog traces. | |
1701 | Added braces inside Tcl source command to allow spaces in | |
1702 | filenames for Tcl scripts. |
0 | 0 | ########################################################################## |
1 | 1 | |
2 | GTKWave 3.3.98 Wave Viewer is Copyright (C) 1999-2019 Tony Bybell. | |
2 | GTKWave 3.3.100 Wave Viewer is Copyright (C) 1999-2019 Tony Bybell. | |
3 | 3 | Portions of GTKWave are Copyright (C) 1999-2019 Udi Finkelstein. |
4 | 4 | Context support is Copyright (C) 2007-2019 Kermin Elliott Fleming. |
5 | 5 | Trace group support is Copyright (C) 2009-2019 Donald Baltus. |
18 | 18 | You have another version of autoconf. It may work, but is not guaranteed to. |
19 | 19 | If you have problems, you may need to regenerate the build system entirely. |
20 | 20 | To do so, use the procedure documented by the package, typically 'autoreconf'.])]) |
21 | ||
22 | # Increment this whenever this file is changed. | |
23 | #serial 1 | |
21 | 24 | |
22 | 25 | dnl GLIB_GSETTINGS |
23 | 26 | dnl Defines GSETTINGS_SCHEMAS_INSTALL which controls whether |
0 | 0 | #! /bin/sh |
1 | 1 | # Guess values for system-dependent variables and create Makefiles. |
2 | # Generated by GNU Autoconf 2.69 for gtkwave 3.3.98. | |
2 | # Generated by GNU Autoconf 2.69 for gtkwave 3.3.100. | |
3 | 3 | # |
4 | 4 | # Report bugs to <bybell@rocketmail.com>. |
5 | 5 | # |
579 | 579 | # Identity of this package. |
580 | 580 | PACKAGE_NAME='gtkwave' |
581 | 581 | PACKAGE_TARNAME='gtkwave' |
582 | PACKAGE_VERSION='3.3.98' | |
583 | PACKAGE_STRING='gtkwave 3.3.98' | |
582 | PACKAGE_VERSION='3.3.100' | |
583 | PACKAGE_STRING='gtkwave 3.3.100' | |
584 | 584 | PACKAGE_BUGREPORT='bybell@rocketmail.com' |
585 | 585 | PACKAGE_URL='' |
586 | 586 | |
1404 | 1404 | # Omit some internal or obsolete options to make the list less imposing. |
1405 | 1405 | # This message is too long to be a string in the A/UX 3.1 sh. |
1406 | 1406 | cat <<_ACEOF |
1407 | \`configure' configures gtkwave 3.3.98 to adapt to many kinds of systems. | |
1407 | \`configure' configures gtkwave 3.3.100 to adapt to many kinds of systems. | |
1408 | 1408 | |
1409 | 1409 | Usage: $0 [OPTION]... [VAR=VALUE]... |
1410 | 1410 | |
1470 | 1470 | |
1471 | 1471 | if test -n "$ac_init_help"; then |
1472 | 1472 | case $ac_init_help in |
1473 | short | recursive ) echo "Configuration of gtkwave 3.3.98:";; | |
1473 | short | recursive ) echo "Configuration of gtkwave 3.3.100:";; | |
1474 | 1474 | esac |
1475 | 1475 | cat <<\_ACEOF |
1476 | 1476 | |
1629 | 1629 | test -n "$ac_init_help" && exit $ac_status |
1630 | 1630 | if $ac_init_version; then |
1631 | 1631 | cat <<\_ACEOF |
1632 | gtkwave configure 3.3.98 | |
1632 | gtkwave configure 3.3.100 | |
1633 | 1633 | generated by GNU Autoconf 2.69 |
1634 | 1634 | |
1635 | 1635 | Copyright (C) 2012 Free Software Foundation, Inc. |
2273 | 2273 | This file contains any messages produced by compilers while |
2274 | 2274 | running configure, to aid debugging if configure makes a mistake. |
2275 | 2275 | |
2276 | It was created by gtkwave $as_me 3.3.98, which was | |
2276 | It was created by gtkwave $as_me 3.3.100, which was | |
2277 | 2277 | generated by GNU Autoconf 2.69. Invocation command line was |
2278 | 2278 | |
2279 | 2279 | $ $0 $@ |
3140 | 3140 | |
3141 | 3141 | # Define the identity of the package. |
3142 | 3142 | PACKAGE='gtkwave' |
3143 | VERSION='3.3.98' | |
3143 | VERSION='3.3.100' | |
3144 | 3144 | |
3145 | 3145 | |
3146 | 3146 | cat >>confdefs.h <<_ACEOF |
11498 | 11498 | # report actual input values of CONFIG_FILES etc. instead of their |
11499 | 11499 | # values after options handling. |
11500 | 11500 | ac_log=" |
11501 | This file was extended by gtkwave $as_me 3.3.98, which was | |
11501 | This file was extended by gtkwave $as_me 3.3.100, which was | |
11502 | 11502 | generated by GNU Autoconf 2.69. Invocation command line was |
11503 | 11503 | |
11504 | 11504 | CONFIG_FILES = $CONFIG_FILES |
11564 | 11564 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 |
11565 | 11565 | ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" |
11566 | 11566 | ac_cs_version="\\ |
11567 | gtkwave config.status 3.3.98 | |
11567 | gtkwave config.status 3.3.100 | |
11568 | 11568 | configured by $0, generated by GNU Autoconf 2.69, |
11569 | 11569 | with options \\"\$ac_cs_config\\" |
11570 | 11570 |
1 | 1 | # Process this file with autoconf to produce a configure script. |
2 | 2 | |
3 | 3 | AC_PREREQ(2.59) |
4 | AC_INIT(gtkwave, 3.3.98, bybell@rocketmail.com) | |
4 | AC_INIT(gtkwave, 3.3.100, bybell@rocketmail.com) | |
5 | 5 | AC_CONFIG_SRCDIR([src/vcd.c]) |
6 | 6 | AM_INIT_AUTOMAKE |
7 | 7 | AC_CONFIG_HEADER([config.h]) |
7 | 7 | <key>CFBundleExecutable</key> |
8 | 8 | <string>gtkwave</string> |
9 | 9 | <key>CFBundleGetInfoString</key> |
10 | <string>3.3.98, (C) 1999-2019 Tony Bybell http://gtkwave.sourceforge.net</string> | |
10 | <string>3.3.100, (C) 1999-2019 Tony Bybell http://gtkwave.sourceforge.net</string> | |
11 | 11 | <key>CFBundleIconFile</key> |
12 | 12 | <string>gtkwave.icns</string> |
13 | 13 | <key>CFBundleIdentifier</key> |
17 | 17 | <key>CFBundlePackageType</key> |
18 | 18 | <string>APPL</string> |
19 | 19 | <key>CFBundleShortVersionString</key> |
20 | <string>3.3.98</string> | |
20 | <string>3.3.100</string> | |
21 | 21 | <key>CFBundleSignature</key> |
22 | 22 | <string>????</string> |
23 | 23 | <key>CFBundleVersion</key> |
24 | <string>3.3.98</string> | |
24 | <string>3.3.100</string> | |
25 | 25 | <key>NSHumanReadableCopyright</key> |
26 | 26 | <string>Copyright 1999 - 2019 Tony Bybell, GNU General Public License.</string> |
27 | 27 | <key>LSMinimumSystemVersion</key> |
243 | 243 | |
244 | 244 | return(GLOBALS->maxlen_trunc_pos_bsearch_c_1); |
245 | 245 | } |
246 | ||
247 | ||
248 | char *bsearch_trunc_print(char *ascii, int maxlen) | |
249 | { | |
250 | int len; | |
251 | ||
252 | if((maxlen<=0)||(!ascii)||(!(len=strlen(ascii)))) return(NULL); | |
253 | ||
254 | GLOBALS->maxlen_trunc=0; GLOBALS->maxlen_trunc_pos_bsearch_c_1=NULL; | |
255 | ||
256 | if(bsearch(&maxlen, GLOBALS->trunc_asciibase_bsearch_c_1=ascii, len, sizeof(char), compar_trunc)) | |
257 | { | |
258 | /* nothing, all side effects are in bsearch */ | |
259 | } | |
260 | ||
261 | return(GLOBALS->maxlen_trunc_pos_bsearch_c_1); | |
262 | } | |
263 | ||
246 | 264 | |
247 | 265 | /*****************************************************************************************/ |
248 | 266 |
16 | 16 | hptr bsearch_node(nptr n, TimeType key); |
17 | 17 | vptr bsearch_vector(bvptr b, TimeType key); |
18 | 18 | char *bsearch_trunc(char *ascii, int maxlen); |
19 | char *bsearch_trunc_print(char *ascii, int maxlen); | |
19 | 20 | struct symbol *bsearch_facs(char *ascii, unsigned int *rows_return); |
20 | 21 | |
21 | 22 | #endif |
520 | 520 | { |
521 | 521 | /* if((*pnt == '[')||(isspace(*pnt))) break; */ |
522 | 522 | |
523 | if(isspace(*pnt)) break; | |
524 | if((*pnt == '[') && (pnt == strrchr(pnt, '['))) /* fix for arrays */ | |
523 | if(isspace(*pnt)) break; | |
524 | if((*pnt == '[') && (pnt == strrchr(pnt, '[')) && (GLOBALS->mvlfacs_vzt_c_3[i].flags != VZT_RD_SYM_F_DOUBLE)) /* fix for arrays */ | |
525 | 525 | { |
526 | 526 | /* now to fix possible generate... */ |
527 | 527 | char *pnt2 = pnt; |
1144 | 1144 | { |
1145 | 1145 | while(*pnt) |
1146 | 1146 | { |
1147 | /* if((*pnt == '[')||(isspace(*pnt))) break; */ | |
1148 | ||
1149 | if(isspace(*pnt)) break; | |
1150 | if((*pnt == '[') && (pnt == strrchr(pnt, '['))) /* fix for arrays */ | |
1147 | if(isspace(*pnt)) | |
1148 | { | |
1149 | if(fh->u.var.typ == FST_VT_VCD_REAL) | |
1150 | { | |
1151 | pnt++; | |
1152 | continue; | |
1153 | } | |
1154 | else | |
1155 | { | |
1156 | break; | |
1157 | } | |
1158 | } | |
1159 | if((*pnt == '[') && (pnt == strrchr(pnt, '[')) && (fh->u.var.typ != FST_VT_VCD_REAL)) /* fix for arrays */ | |
1151 | 1160 | { |
1152 | 1161 | /* now to fix possible generate... */ |
1153 | 1162 | const char *pnt2 = pnt; |
845 | 845 | NULL, /* button1_showchange_c_4 363 */ |
846 | 846 | NULL, /* button1_showchange_c_5 363 */ |
847 | 847 | NULL, /* button1_showchange_c_6 363 */ |
848 | NULL, /* button1_showchange_c_7 363 */ | |
849 | NULL, /* button1_showchange_c_8 363 */ | |
850 | NULL, /* button1_showchange_c_9 363 */ | |
848 | 851 | NULL, /* toggle1_showchange_c_1 364 */ |
849 | 852 | NULL, /* toggle2_showchange_c_1 364 */ |
850 | 853 | NULL, /* toggle3_showchange_c_1 364 */ |
851 | 854 | NULL, /* toggle4_showchange_c_1 364 */ |
855 | NULL, /* toggle5_showchange_c_1 364 */ | |
852 | 856 | NULL, /* window_showchange_c_8 365 */ |
853 | 857 | NULL, /* cleanup_showchange_c_6 366 */ |
854 | 858 | NULL, /* tcache_showchange_c_1 367 */ |
848 | 848 | GtkWidget *button4_showchange_c_1; /* from showchange.c 385 */ |
849 | 849 | GtkWidget *button5_showchange_c_1; /* from showchange.c 386 */ |
850 | 850 | GtkWidget *button6_showchange_c_1; /* from showchange.c 387 */ |
851 | GtkWidget *button7_showchange_c_1; /* from showchange.c 387 */ | |
852 | GtkWidget *button8_showchange_c_1; /* from showchange.c 387 */ | |
853 | GtkWidget *button9_showchange_c_1; /* from showchange.c 387 */ | |
851 | 854 | GtkWidget *toggle1_showchange_c_1; /* from showchange.c 388 */ |
852 | 855 | GtkWidget *toggle2_showchange_c_1; /* from showchange.c 389 */ |
853 | 856 | GtkWidget *toggle3_showchange_c_1; /* from showchange.c 390 */ |
854 | 857 | GtkWidget *toggle4_showchange_c_1; /* from showchange.c 391 */ |
858 | GtkWidget *toggle5_showchange_c_1; /* from showchange.c 391 */ | |
855 | 859 | GtkWidget *window_showchange_c_8; /* from showchange.c 392 */ |
856 | 860 | void (*cleanup_showchange_c_6)(void); /* from showchange.c 393 */ |
857 | 861 | struct TraceEnt *tcache_showchange_c_1; /* from showchange.c 394 */ |
193 | 193 | dwRetVal = GetTempPath(MAX_PATH, lpTempPathBuffer); |
194 | 194 | if((dwRetVal > MAX_PATH) || (dwRetVal == 0)) |
195 | 195 | { |
196 | fprintf(stderr, FST_APIMESS"GetTempPath() failed in "__FILE__" line %d, exiting.\n", __LINE__); | |
196 | fprintf(stderr, FST_APIMESS "GetTempPath() failed in " __FILE__ " line %d, exiting.\n", __LINE__); | |
197 | 197 | exit(255); |
198 | 198 | } |
199 | 199 | else |
201 | 201 | uRetVal = GetTempFileName(lpTempPathBuffer, TEXT("FSTW"), 0, szTempFileName); |
202 | 202 | if (uRetVal == 0) |
203 | 203 | { |
204 | fprintf(stderr, FST_APIMESS"GetTempFileName() failed in "__FILE__" line %d, exiting.\n", __LINE__); | |
204 | fprintf(stderr, FST_APIMESS "GetTempFileName() failed in " __FILE__ " line %d, exiting.\n", __LINE__); | |
205 | 205 | exit(255); |
206 | 206 | } |
207 | 207 | else |
805 | 805 | { |
806 | 806 | xc->fseek_failed = 1; |
807 | 807 | #ifdef FST_DEBUG |
808 | fprintf(stderr, FST_APIMESS"Seek to #%" PRId64 " (whence = %d) failed!\n", offset, whence); | |
808 | fprintf(stderr, FST_APIMESS "Seek to #%" PRId64 " (whence = %d) failed!\n", offset, whence); | |
809 | 809 | perror("Why"); |
810 | 810 | #endif |
811 | 811 | } |
1665 | 1665 | /* fpos += */ fstWriterVarint(f, (zerocnt << 1)); /* scan-build */ |
1666 | 1666 | } |
1667 | 1667 | #ifdef FST_DEBUG |
1668 | fprintf(stderr, FST_APIMESS"value chains: %d\n", cnt); | |
1668 | fprintf(stderr, FST_APIMESS "value chains: %d\n", cnt); | |
1669 | 1669 | #endif |
1670 | 1670 | |
1671 | 1671 | xc->vchg_mem[0] = '!'; |
1740 | 1740 | xc2->size_limit_locked = 1; |
1741 | 1741 | xc2->is_initial_time = 1; /* to trick emit value and emit time change */ |
1742 | 1742 | #ifdef FST_DEBUG |
1743 | fprintf(stderr, FST_APIMESS"<< dump file size limit reached, stopping dumping >>\n"); | |
1743 | fprintf(stderr, FST_APIMESS "<< dump file size limit reached, stopping dumping >>\n"); | |
1744 | 1744 | #endif |
1745 | 1745 | } |
1746 | 1746 | } |
2480 | 2480 | #ifndef FST_WRITER_PARALLEL |
2481 | 2481 | if(xc->parallel_enabled) |
2482 | 2482 | { |
2483 | fprintf(stderr, FST_APIMESS"fstWriterSetParallelMode(), FST_WRITER_PARALLEL not enabled during compile, exiting.\n"); | |
2483 | fprintf(stderr, FST_APIMESS "fstWriterSetParallelMode(), FST_WRITER_PARALLEL not enabled during compile, exiting.\n"); | |
2484 | 2484 | exit(255); |
2485 | 2485 | } |
2486 | 2486 | #endif |
2805 | 2805 | attr_str[pos-1] = 0; |
2806 | 2806 | |
2807 | 2807 | #ifdef FST_DEBUG |
2808 | fprintf(stderr, FST_APIMESS"fstWriterCreateEnumTable() total_len: %d, pos: %d\n", total_len, pos); | |
2809 | fprintf(stderr, FST_APIMESS"*%s*\n", attr_str); | |
2808 | fprintf(stderr, FST_APIMESS "fstWriterCreateEnumTable() total_len: %d, pos: %d\n", total_len, pos); | |
2809 | fprintf(stderr, FST_APIMESS "*%s*\n", attr_str); | |
2810 | 2810 | #endif |
2811 | 2811 | |
2812 | 2812 | fstWriterSetAttrBegin(xc, FST_AT_MISC, FST_MT_ENUMTABLE, attr_str, handle = ++xc->max_enumhandle); |
2867 | 2867 | xc->vchg_mem = (unsigned char *)realloc(xc->vchg_mem, xc->vchg_alloc_siz); |
2868 | 2868 | if(!xc->vchg_mem) |
2869 | 2869 | { |
2870 | fprintf(stderr, FST_APIMESS"Could not realloc() in fstWriterEmitValueChange, exiting.\n"); | |
2870 | fprintf(stderr, FST_APIMESS "Could not realloc() in fstWriterEmitValueChange, exiting.\n"); | |
2871 | 2871 | exit(255); |
2872 | 2872 | } |
2873 | 2873 | } |
2981 | 2981 | xc->vchg_mem = (unsigned char *)realloc(xc->vchg_mem, xc->vchg_alloc_siz); |
2982 | 2982 | if(!xc->vchg_mem) |
2983 | 2983 | { |
2984 | fprintf(stderr, FST_APIMESS"Could not realloc() in fstWriterEmitVariableLengthValueChange, exiting.\n"); | |
2984 | fprintf(stderr, FST_APIMESS "Could not realloc() in fstWriterEmitVariableLengthValueChange, exiting.\n"); | |
2985 | 2985 | exit(255); |
2986 | 2986 | } |
2987 | 2987 | } |
3226 | 3226 | { |
3227 | 3227 | xc->fseek_failed = 1; |
3228 | 3228 | #ifdef FST_DEBUG |
3229 | fprintf(stderr, FST_APIMESS"Seek to #%" PRId64 " (whence = %d) failed!\n", offset, whence); | |
3229 | fprintf(stderr, FST_APIMESS "Seek to #%" PRId64 " (whence = %d) failed!\n", offset, whence); | |
3230 | 3230 | perror("Why"); |
3231 | 3231 | #endif |
3232 | 3232 | } |
4546 | 4546 | |
4547 | 4547 | if(rc != Z_OK) |
4548 | 4548 | { |
4549 | fprintf(stderr, FST_APIMESS"fstReaderInit(), geom uncompress rc = %d, exiting.\n", rc); | |
4549 | fprintf(stderr, FST_APIMESS "fstReaderInit(), geom uncompress rc = %d, exiting.\n", rc); | |
4550 | 4550 | exit(255); |
4551 | 4551 | } |
4552 | 4552 | |
4837 | 4837 | if((sectype == EOF) || (sectype == FST_BL_SKIP)) |
4838 | 4838 | { |
4839 | 4839 | #ifdef FST_DEBUG |
4840 | fprintf(stderr, FST_APIMESS"<< EOF >>\n"); | |
4840 | fprintf(stderr, FST_APIMESS "<< EOF >>\n"); | |
4841 | 4841 | #endif |
4842 | 4842 | break; |
4843 | 4843 | } |
4876 | 4876 | mem_required_for_traversal = fstReaderUint64(xc->f); |
4877 | 4877 | mem_for_traversal = (unsigned char *)malloc(mem_required_for_traversal + 66); /* add in potential fastlz overhead */ |
4878 | 4878 | #ifdef FST_DEBUG |
4879 | fprintf(stderr, FST_APIMESS"sec: %u seclen: %d begtim: %d endtim: %d\n", | |
4879 | fprintf(stderr, FST_APIMESS "sec: %u seclen: %d begtim: %d endtim: %d\n", | |
4880 | 4880 | secnum, (int)seclen, (int)beg_tim, (int)end_tim); |
4881 | fprintf(stderr, FST_APIMESS"mem_required_for_traversal: %d\n", (int)mem_required_for_traversal); | |
4881 | fprintf(stderr, FST_APIMESS "mem_required_for_traversal: %d\n", (int)mem_required_for_traversal); | |
4882 | 4882 | #endif |
4883 | 4883 | /* process time block */ |
4884 | 4884 | { |
4896 | 4896 | tsec_clen = fstReaderUint64(xc->f); |
4897 | 4897 | tsec_nitems = fstReaderUint64(xc->f); |
4898 | 4898 | #ifdef FST_DEBUG |
4899 | fprintf(stderr, FST_APIMESS"time section unc: %d, com: %d (%d items)\n", | |
4899 | fprintf(stderr, FST_APIMESS "time section unc: %d, com: %d (%d items)\n", | |
4900 | 4900 | (int)tsec_uclen, (int)tsec_clen, (int)tsec_nitems); |
4901 | 4901 | #endif |
4902 | 4902 | if(tsec_clen > seclen) break; /* corrupted tsec_clen: by definition it can't be larger than size of section */ |
4916 | 4916 | |
4917 | 4917 | if(rc != Z_OK) |
4918 | 4918 | { |
4919 | fprintf(stderr, FST_APIMESS"fstReaderIterBlocks2(), tsec uncompress rc = %d, exiting.\n", rc); | |
4919 | fprintf(stderr, FST_APIMESS "fstReaderIterBlocks2(), tsec uncompress rc = %d, exiting.\n", rc); | |
4920 | 4920 | exit(255); |
4921 | 4921 | } |
4922 | 4922 | |
4992 | 4992 | rc = uncompress(mu, &destlen, mc, sourcelen); |
4993 | 4993 | if(rc != Z_OK) |
4994 | 4994 | { |
4995 | fprintf(stderr, FST_APIMESS"fstReaderIterBlocks2(), frame uncompress rc: %d, exiting.\n", rc); | |
4995 | fprintf(stderr, FST_APIMESS "fstReaderIterBlocks2(), frame uncompress rc: %d, exiting.\n", rc); | |
4996 | 4996 | exit(255); |
4997 | 4997 | } |
4998 | 4998 | free(mc); |
5155 | 5155 | packtype = fgetc(xc->f); |
5156 | 5156 | |
5157 | 5157 | #ifdef FST_DEBUG |
5158 | fprintf(stderr, FST_APIMESS"frame_uclen: %d, frame_clen: %d, frame_maxhandle: %d\n", | |
5158 | fprintf(stderr, FST_APIMESS "frame_uclen: %d, frame_clen: %d, frame_maxhandle: %d\n", | |
5159 | 5159 | (int)frame_uclen, (int)frame_clen, (int)frame_maxhandle); |
5160 | fprintf(stderr, FST_APIMESS"vc_maxhandle: %d, packtype: %c\n", (int)vc_maxhandle, packtype); | |
5160 | fprintf(stderr, FST_APIMESS "vc_maxhandle: %d, packtype: %c\n", (int)vc_maxhandle, packtype); | |
5161 | 5161 | #endif |
5162 | 5162 | |
5163 | 5163 | indx_pntr = blkpos + seclen - 24 -tsec_clen -8; |
5165 | 5165 | chain_clen = fstReaderUint64(xc->f); |
5166 | 5166 | indx_pos = indx_pntr - chain_clen; |
5167 | 5167 | #ifdef FST_DEBUG |
5168 | fprintf(stderr, FST_APIMESS"indx_pos: %d (%d bytes)\n", (int)indx_pos, (int)chain_clen); | |
5168 | fprintf(stderr, FST_APIMESS "indx_pos: %d (%d bytes)\n", (int)indx_pos, (int)chain_clen); | |
5169 | 5169 | #endif |
5170 | 5170 | chain_cmem = (unsigned char *)malloc(chain_clen); |
5171 | 5171 | if(!chain_cmem) goto block_err; |
5284 | 5284 | } |
5285 | 5285 | |
5286 | 5286 | #ifdef FST_DEBUG |
5287 | fprintf(stderr, FST_APIMESS"decompressed chain idx len: %" PRIu32 "\n", idx); | |
5287 | fprintf(stderr, FST_APIMESS "decompressed chain idx len: %" PRIu32 "\n", idx); | |
5288 | 5288 | #endif |
5289 | 5289 | |
5290 | 5290 | mc_mem_len = 16384; |
5352 | 5352 | |
5353 | 5353 | if(rc != Z_OK) |
5354 | 5354 | { |
5355 | fprintf(stderr, FST_APIMESS"fstReaderIterBlocks2(), fac: %d clen: %d (rc=%d), exiting.\n", (int)i, (int)val, rc); | |
5355 | fprintf(stderr, FST_APIMESS "fstReaderIterBlocks2(), fac: %d clen: %d (rc=%d), exiting.\n", (int)i, (int)val, rc); | |
5356 | 5356 | exit(255); |
5357 | 5357 | } |
5358 | 5358 | |
5904 | 5904 | fstReaderUint64(xc->f); |
5905 | 5905 | |
5906 | 5906 | #ifdef FST_DEBUG |
5907 | fprintf(stderr, FST_APIMESS"rvat sec: %u seclen: %d begtim: %d endtim: %d\n", | |
5907 | fprintf(stderr, FST_APIMESS "rvat sec: %u seclen: %d begtim: %d endtim: %d\n", | |
5908 | 5908 | secnum, (int)seclen, (int)beg_tim, (int)end_tim); |
5909 | fprintf(stderr, FST_APIMESS"mem_required_for_traversal: %d\n", (int)mem_required_for_traversal); | |
5909 | fprintf(stderr, FST_APIMESS "mem_required_for_traversal: %d\n", (int)mem_required_for_traversal); | |
5910 | 5910 | #endif |
5911 | 5911 | |
5912 | 5912 | /* process time block */ |
5925 | 5925 | tsec_clen = fstReaderUint64(xc->f); |
5926 | 5926 | tsec_nitems = fstReaderUint64(xc->f); |
5927 | 5927 | #ifdef FST_DEBUG |
5928 | fprintf(stderr, FST_APIMESS"time section unc: %d, com: %d (%d items)\n", | |
5928 | fprintf(stderr, FST_APIMESS "time section unc: %d, com: %d (%d items)\n", | |
5929 | 5929 | (int)tsec_uclen, (int)tsec_clen, (int)tsec_nitems); |
5930 | 5930 | #endif |
5931 | 5931 | ucdata = (unsigned char *)malloc(tsec_uclen); |
5942 | 5942 | |
5943 | 5943 | if(rc != Z_OK) |
5944 | 5944 | { |
5945 | fprintf(stderr, FST_APIMESS"fstReaderGetValueFromHandleAtTime(), tsec uncompress rc = %d, exiting.\n", rc); | |
5945 | fprintf(stderr, FST_APIMESS "fstReaderGetValueFromHandleAtTime(), tsec uncompress rc = %d, exiting.\n", rc); | |
5946 | 5946 | exit(255); |
5947 | 5947 | } |
5948 | 5948 | |
5990 | 5990 | rc = uncompress(xc->rvat_frame_data, &destlen, mc, sourcelen); |
5991 | 5991 | if(rc != Z_OK) |
5992 | 5992 | { |
5993 | fprintf(stderr, FST_APIMESS"fstReaderGetValueFromHandleAtTime(), frame decompress rc: %d, exiting.\n", rc); | |
5993 | fprintf(stderr, FST_APIMESS "fstReaderGetValueFromHandleAtTime(), frame decompress rc: %d, exiting.\n", rc); | |
5994 | 5994 | exit(255); |
5995 | 5995 | } |
5996 | 5996 | free(mc); |
6001 | 6001 | xc->rvat_packtype = fgetc(xc->f); |
6002 | 6002 | |
6003 | 6003 | #ifdef FST_DEBUG |
6004 | fprintf(stderr, FST_APIMESS"frame_uclen: %d, frame_clen: %d, frame_maxhandle: %d\n", | |
6004 | fprintf(stderr, FST_APIMESS "frame_uclen: %d, frame_clen: %d, frame_maxhandle: %d\n", | |
6005 | 6005 | (int)frame_uclen, (int)frame_clen, (int)xc->rvat_frame_maxhandle); |
6006 | fprintf(stderr, FST_APIMESS"vc_maxhandle: %d\n", (int)xc->rvat_vc_maxhandle); | |
6006 | fprintf(stderr, FST_APIMESS "vc_maxhandle: %d\n", (int)xc->rvat_vc_maxhandle); | |
6007 | 6007 | #endif |
6008 | 6008 | |
6009 | 6009 | indx_pntr = blkpos + seclen - 24 -tsec_clen -8; |
6011 | 6011 | chain_clen = fstReaderUint64(xc->f); |
6012 | 6012 | indx_pos = indx_pntr - chain_clen; |
6013 | 6013 | #ifdef FST_DEBUG |
6014 | fprintf(stderr, FST_APIMESS"indx_pos: %d (%d bytes)\n", (int)indx_pos, (int)chain_clen); | |
6014 | fprintf(stderr, FST_APIMESS "indx_pos: %d (%d bytes)\n", (int)indx_pos, (int)chain_clen); | |
6015 | 6015 | #endif |
6016 | 6016 | chain_cmem = (unsigned char *)malloc(chain_clen); |
6017 | 6017 | fstReaderFseeko(xc, xc->f, indx_pos, SEEK_SET); |
6122 | 6122 | } |
6123 | 6123 | |
6124 | 6124 | #ifdef FST_DEBUG |
6125 | fprintf(stderr, FST_APIMESS"decompressed chain idx len: %" PRIu32 "\n", idx); | |
6125 | fprintf(stderr, FST_APIMESS "decompressed chain idx len: %" PRIu32 "\n", idx); | |
6126 | 6126 | #endif |
6127 | 6127 | |
6128 | 6128 | xc->rvat_data_valid = 1; |
6182 | 6182 | |
6183 | 6183 | if(rc != Z_OK) |
6184 | 6184 | { |
6185 | fprintf(stderr, FST_APIMESS"fstReaderGetValueFromHandleAtTime(), rvat decompress clen: %d (rc=%d), exiting.\n", (int)xc->rvat_chain_len, rc); | |
6185 | fprintf(stderr, FST_APIMESS "fstReaderGetValueFromHandleAtTime(), rvat decompress clen: %d (rc=%d), exiting.\n", (int)xc->rvat_chain_len, rc); | |
6186 | 6186 | exit(255); |
6187 | 6187 | } |
6188 | 6188 |
4480 | 4480 | t=GLOBALS->showchangeall_menu_c_1; |
4481 | 4481 | if(t) |
4482 | 4482 | { |
4483 | flags=t->flags; | |
4483 | flags = t->flags & (TR_NUMMASK | TR_HIGHLIGHT); | |
4484 | 4484 | while(t) |
4485 | 4485 | { |
4486 | 4486 | if((t->flags&TR_HIGHLIGHT)&&(!(t->flags&(TR_BLANK|TR_ANALOG_BLANK_STRETCH)))&&(t->name)) |
4487 | 4487 | { |
4488 | t->flags=flags; | |
4488 | t->flags = (t->flags & ~(TR_NUMMASK | TR_HIGHLIGHT)) | flags; | |
4489 | t->minmax_valid = 0; /* force analog traces to regenerate if necessary */ | |
4489 | 4490 | } |
4490 | 4491 | t=t->t_next; |
4491 | 4492 | } |
8533 | 8534 | { |
8534 | 8535 | #if defined(HAVE_LIBTCL) |
8535 | 8536 | int tclrc; |
8536 | char *tcl_cmd = wave_alloca(7 + nlen + 1); /* originally a malloc, but the script can change the context! */ | |
8537 | strcpy(tcl_cmd, "source "); | |
8538 | strcpy(tcl_cmd+7, name); | |
8537 | char *tcl_cmd = wave_alloca(8 + nlen + 1 + 1); /* originally a malloc, but the script can change the context! */ | |
8538 | strcpy(tcl_cmd, "source {"); | |
8539 | strcpy(tcl_cmd+8, name); | |
8540 | strcpy(tcl_cmd+8+nlen, "}"); | |
8539 | 8541 | |
8540 | 8542 | fprintf(stderr, "GTKWAVE | Executing Tcl script '%s'\n", name); |
8541 | 8543 |
2298 | 2298 | char *mod; |
2299 | 2299 | |
2300 | 2300 | mod = |
2301 | bsearch_trunc (t_ascii, | |
2301 | bsearch_trunc_print (t_ascii, | |
2302 | 2302 | width - GLOBALS->vector_padding); |
2303 | 2303 | if (mod) |
2304 | 2304 | { |
2982 | 2982 | char *mod; |
2983 | 2983 | |
2984 | 2984 | mod = |
2985 | bsearch_trunc (t_ascii, | |
2985 | bsearch_trunc_print (t_ascii, | |
2986 | 2986 | width - GLOBALS->vector_padding); |
2987 | 2987 | if (mod) |
2988 | 2988 | { |
54 | 54 | |
55 | 55 | toggle_generic(widget, TR_EXCLUDE); |
56 | 56 | } |
57 | static void toggle5_callback(GtkWidget *widget, GtkWidget *nothing) | |
58 | { | |
59 | (void)nothing; | |
60 | ||
61 | toggle_generic(widget, TR_POPCNT); | |
62 | } | |
57 | 63 | |
58 | 64 | static void enter_callback(GtkWidget *widget, GtkWidget *nothing) |
59 | 65 | { |
91 | 97 | { |
92 | 98 | GLOBALS->flags_showchange_c_1|=TR_ASCII; |
93 | 99 | } |
100 | else | |
101 | if(GTK_TOGGLE_BUTTON(GLOBALS->button7_showchange_c_1)->active) | |
102 | { | |
103 | GLOBALS->flags_showchange_c_1|=TR_REAL; | |
104 | } | |
105 | else | |
106 | if(GTK_TOGGLE_BUTTON(GLOBALS->button8_showchange_c_1)->active) | |
107 | { | |
108 | GLOBALS->flags_showchange_c_1|=(TR_TIME|TR_DEC); | |
109 | } | |
110 | else | |
111 | if(GTK_TOGGLE_BUTTON(GLOBALS->button9_showchange_c_1)->active) | |
112 | { | |
113 | GLOBALS->flags_showchange_c_1|=(TR_ENUM|TR_BIN); | |
114 | } | |
94 | 115 | |
95 | 116 | GLOBALS->tcache_showchange_c_1->flags=GLOBALS->flags_showchange_c_1; |
117 | GLOBALS->tcache_showchange_c_1->minmax_valid = 0; /* force analog traces to regenerate if necessary */ | |
96 | 118 | |
97 | 119 | wave_gtk_grab_remove(GLOBALS->window_showchange_c_8); |
98 | 120 | gtk_widget_destroy(GLOBALS->window_showchange_c_8); |
172 | 194 | |
173 | 195 | GLOBALS->button2_showchange_c_1 = gtk_radio_button_new_with_label(group, "Decimal"); |
174 | 196 | gtk_box_pack_start (GTK_BOX (box2), GLOBALS->button2_showchange_c_1, TRUE, TRUE, 0); |
175 | if(GLOBALS->flags_showchange_c_1&TR_DEC) gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (GLOBALS->button2_showchange_c_1), TRUE); | |
197 | if((GLOBALS->flags_showchange_c_1&TR_DEC) && (!(GLOBALS->flags_showchange_c_1&TR_TIME))) gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (GLOBALS->button2_showchange_c_1), TRUE); | |
176 | 198 | gtk_widget_show (GLOBALS->button2_showchange_c_1); |
177 | 199 | group = gtk_radio_button_group (GTK_RADIO_BUTTON (GLOBALS->button2_showchange_c_1)); |
178 | 200 | |
184 | 206 | |
185 | 207 | GLOBALS->button3_showchange_c_1 = gtk_radio_button_new_with_label(group, "Binary"); |
186 | 208 | gtk_box_pack_start (GTK_BOX (box2), GLOBALS->button3_showchange_c_1, TRUE, TRUE, 0); |
187 | if(GLOBALS->flags_showchange_c_1&TR_BIN) gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (GLOBALS->button3_showchange_c_1), TRUE); | |
209 | if((GLOBALS->flags_showchange_c_1&TR_BIN) && (!(GLOBALS->flags_showchange_c_1&TR_ENUM))) gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (GLOBALS->button3_showchange_c_1), TRUE); | |
188 | 210 | gtk_widget_show (GLOBALS->button3_showchange_c_1); |
189 | 211 | group = gtk_radio_button_group (GTK_RADIO_BUTTON (GLOBALS->button3_showchange_c_1)); |
190 | 212 | |
198 | 220 | gtk_box_pack_start (GTK_BOX (box2), GLOBALS->button6_showchange_c_1, TRUE, TRUE, 0); |
199 | 221 | if(GLOBALS->flags_showchange_c_1&TR_ASCII) gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (GLOBALS->button6_showchange_c_1), TRUE); |
200 | 222 | gtk_widget_show (GLOBALS->button6_showchange_c_1); |
223 | group = gtk_radio_button_group (GTK_RADIO_BUTTON (GLOBALS->button6_showchange_c_1)); | |
224 | ||
225 | GLOBALS->button7_showchange_c_1 = gtk_radio_button_new_with_label(group, "Real"); | |
226 | gtk_box_pack_start (GTK_BOX (box2), GLOBALS->button7_showchange_c_1, TRUE, TRUE, 0); | |
227 | if(GLOBALS->flags_showchange_c_1&TR_ASCII) gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (GLOBALS->button7_showchange_c_1), TRUE); | |
228 | gtk_widget_show (GLOBALS->button7_showchange_c_1); | |
229 | group = gtk_radio_button_group (GTK_RADIO_BUTTON (GLOBALS->button7_showchange_c_1)); | |
230 | ||
231 | GLOBALS->button8_showchange_c_1 = gtk_radio_button_new_with_label(group, "Time"); | |
232 | gtk_box_pack_start (GTK_BOX (box2), GLOBALS->button8_showchange_c_1, TRUE, TRUE, 0); | |
233 | if(GLOBALS->flags_showchange_c_1&TR_ASCII) gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (GLOBALS->button8_showchange_c_1), TRUE); | |
234 | gtk_widget_show (GLOBALS->button8_showchange_c_1); | |
235 | group = gtk_radio_button_group (GTK_RADIO_BUTTON (GLOBALS->button8_showchange_c_1)); | |
236 | ||
237 | GLOBALS->button9_showchange_c_1 = gtk_radio_button_new_with_label(group, "Enum"); | |
238 | gtk_box_pack_start (GTK_BOX (box2), GLOBALS->button9_showchange_c_1, TRUE, TRUE, 0); | |
239 | if(GLOBALS->flags_showchange_c_1&TR_ASCII) gtk_toggle_button_set_state (GTK_TOGGLE_BUTTON (GLOBALS->button9_showchange_c_1), TRUE); | |
240 | gtk_widget_show (GLOBALS->button9_showchange_c_1); | |
201 | 241 | |
202 | 242 | frame2 = gtk_frame_new ("Base"); |
203 | 243 | gtk_container_border_width (GTK_CONTAINER (frame2), 3); |
242 | 282 | gtk_widget_show (GLOBALS->toggle4_showchange_c_1); |
243 | 283 | gtkwave_signal_connect (GTK_OBJECT (GLOBALS->toggle4_showchange_c_1), "toggled", GTK_SIGNAL_FUNC(toggle4_callback), NULL); |
244 | 284 | |
285 | GLOBALS->toggle5_showchange_c_1=gtk_check_button_new_with_label("Popcnt"); | |
286 | gtk_box_pack_start (GTK_BOX (box1), GLOBALS->toggle5_showchange_c_1, TRUE, TRUE, 0); | |
287 | if(GLOBALS->flags_showchange_c_1&TR_POPCNT)gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(GLOBALS->toggle5_showchange_c_1), TRUE); | |
288 | gtk_widget_show (GLOBALS->toggle5_showchange_c_1); | |
289 | gtkwave_signal_connect (GTK_OBJECT (GLOBALS->toggle5_showchange_c_1), "toggled", GTK_SIGNAL_FUNC(toggle5_callback), NULL); | |
290 | ||
245 | 291 | gtk_container_add (GTK_CONTAINER (main_vbox), hbox); |
246 | 292 | |
247 | 293 | separator = gtk_hseparator_new (); |
2875 | 2875 | { |
2876 | 2876 | int tclrc; |
2877 | 2877 | int nlen = strlen(nam); |
2878 | char *tcl_cmd = wave_alloca(7 + nlen + 1); | |
2879 | strcpy(tcl_cmd, "source "); | |
2880 | strcpy(tcl_cmd+7, nam); | |
2878 | char *tcl_cmd = wave_alloca(8 + nlen + 1 + 1); | |
2879 | strcpy(tcl_cmd, "source {"); | |
2880 | strcpy(tcl_cmd+8, nam); | |
2881 | strcpy(tcl_cmd+8+nlen, "}"); | |
2881 | 2882 | |
2882 | 2883 | GLOBALS->tcl_running = 1; |
2883 | 2884 | tclrc = Tcl_Eval (GLOBALS->interp, tcl_cmd); |
2999 | 3000 | { |
3000 | 3001 | int tclrc; |
3001 | 3002 | int nlen = strlen(GLOBALS->repscript_name); |
3002 | char *tcl_cmd = wave_alloca(7 + nlen + 1); | |
3003 | strcpy(tcl_cmd, "source "); | |
3004 | strcpy(tcl_cmd+7, GLOBALS->repscript_name); | |
3003 | char *tcl_cmd = wave_alloca(8 + nlen + 1 + 1); | |
3004 | strcpy(tcl_cmd, "source {"); | |
3005 | strcpy(tcl_cmd+8, GLOBALS->repscript_name); | |
3006 | strcpy(tcl_cmd+8+nlen, "}"); | |
3005 | 3007 | |
3006 | 3008 | GLOBALS->tcl_running = 1; |
3007 | 3009 | tclrc = Tcl_Eval (GLOBALS->interp, tcl_cmd); |
1879 | 1879 | he->v.h_val=heval; |
1880 | 1880 | |
1881 | 1881 | n->curr->next=he; |
1882 | if(n->curr->v.h_val==heval) | |
1883 | { | |
1884 | n->curr->flags|=HIST_GLITCH; /* set the glitch flag */ | |
1885 | GLOBALS->num_glitch_regions_vcd_recoder_c_4++; | |
1886 | } | |
1882 | 1887 | n->curr=he; |
1883 | 1888 | GLOBALS->regions+=regadd; |
1884 | 1889 | } |
1747 | 1747 | he->v.h_val=heval; |
1748 | 1748 | |
1749 | 1749 | n->curr->next=he; |
1750 | if(n->curr->v.h_val==heval) | |
1751 | { | |
1752 | n->curr->flags|=HIST_GLITCH; /* set the glitch flag */ | |
1753 | GLOBALS->num_glitch_regions_vcd_recoder_c_4++; | |
1754 | } | |
1750 | 1755 | n->curr=he; |
1751 | 1756 | GLOBALS->regions+=regadd; |
1752 | 1757 | } |
2213 | 2213 | he->v.h_val=heval; |
2214 | 2214 | |
2215 | 2215 | n->curr->next=he; |
2216 | if(n->curr->v.h_val==heval) | |
2217 | { | |
2218 | n->curr->flags|=HIST_GLITCH; /* set the glitch flag */ | |
2219 | GLOBALS->num_glitch_regions_vcd_recoder_c_4++; | |
2220 | } | |
2216 | 2221 | n->curr=he; |
2217 | 2222 | GLOBALS->regions+=regadd; |
2218 | 2223 | } |