[Pkg-electronics-commits] [gtkwave] 01/03: Imported Upstream version 3.3.48
أحمد المحمودي (Ahmed El-Mahmoudy)
aelmahmoudy at sabily.org
Thu Sep 12 12:56:56 UTC 2013
This is an automated email from the git hooks/post-receive script.
aelmahmoudy-guest pushed a commit to branch master
in repository gtkwave.
commit 82b004af9f4fed0177f5bc84d3aa51fffc8c50a1
Author: أحمد المحمودي (Ahmed El-Mahmoudy) <aelmahmoudy at sabily.org>
Date: Sat Aug 24 17:02:29 2013 +0200
Imported Upstream version 3.3.48
---
ChangeLog | 33 +
LICENSE.TXT | 2 +-
Makefile.in | 6 +
configure | 1553 +++++++++++++++------
configure.ac | 89 +-
contrib/Makefile.in | 6 +
contrib/bundle_for_osx/Info-gtkwave.plist | 6 +-
contrib/pccts/IBM_VISUAL_AGE_PROJECTS/Makefile.in | 6 +
contrib/pccts/Makefile.in | 6 +
contrib/pccts/antlr/Makefile.in | 6 +
contrib/pccts/dlg/Makefile.in | 6 +
contrib/pccts/h/Makefile.in | 6 +
contrib/pccts/sorcerer/Makefile.in | 6 +
contrib/pccts/sorcerer/h/Makefile.in | 6 +
contrib/pccts/sorcerer/lib/Makefile.in | 6 +
contrib/pccts/sorcerer/test/Makefile.in | 6 +
contrib/pccts/sorcerer/test/test7/Makefile.in | 6 +
contrib/pccts/sorcerer/testcpp/Makefile.in | 6 +
contrib/pccts/support/DECmms/Makefile.in | 6 +
contrib/pccts/support/Makefile.in | 6 +
contrib/pccts/support/genmk/Makefile.in | 6 +
contrib/pccts/support/rexpr/Makefile.in | 6 +
contrib/pccts/support/set/Makefile.in | 6 +
contrib/pccts/support/sym/Makefile.in | 6 +
contrib/pccts/testcpp/Makefile.in | 6 +
contrib/rtlbrowse/Makefile.in | 6 +
contrib/rtlbrowse/vlex.l | 8 +-
contrib/vermin/Makefile.in | 6 +
doc/Makefile.in | 6 +
examples/Makefile.in | 6 +
examples/gtkwaverc | 1 +
man/Makefile.in | 6 +
share/Makefile.in | 6 +
share/applications/Makefile.in | 6 +
share/icons/Makefile.in | 6 +
share/icons/gnome/16x16/Makefile.in | 6 +
share/icons/gnome/16x16/mimetypes/Makefile.in | 6 +
share/icons/gnome/32x32/Makefile.in | 6 +
share/icons/gnome/32x32/mimetypes/Makefile.in | 6 +
share/icons/gnome/48x48/Makefile.in | 6 +
share/icons/gnome/48x48/mimetypes/Makefile.in | 6 +
share/icons/gnome/Makefile.in | 6 +
share/mime/Makefile.in | 6 +
share/mime/packages/Makefile.in | 6 +
src/Makefile.am | 11 +-
src/Makefile.in | 96 +-
src/analyzer.h | 42 +-
src/bitvec.c | 8 +-
src/cocoa/Makefile.in | 6 +
src/entry.c | 18 +-
src/extload.c | 1083 +++++++++-----
src/extload.h | 4 +
src/fsdb_wrapper_api.cc | 725 ++++++++++
src/fsdb_wrapper_api.h | 65 +
src/fst.c | 45 +-
src/globals.c | 67 +-
src/globals.h | 22 +
src/helpers/Makefile.in | 6 +
src/helpers/evcd2vcd.c | 4 +
src/helpers/fst/Makefile.in | 6 +
src/helpers/fst/fstapi.c | 199 ++-
src/helpers/fst/fstapi.h | 104 +-
src/helpers/fst2vcd.c | 5 +-
src/helpers/lxt2miner.c | 4 +
src/helpers/lxt2vcd.c | 4 +
src/helpers/vcd2fst.c | 322 ++++-
src/helpers/vcd2lxt2.c | 4 +
src/helpers/vcd2vzt.c | 4 +
src/helpers/vzt2vcd.c | 4 +
src/libbz2/Makefile.in | 6 +
src/liblzma/Makefile.in | 6 +
src/libz/Makefile.in | 6 +
src/lx2.c | 3 +
src/lx2.h | 2 +-
src/main.c | 11 +-
src/menu.c | 118 +-
src/menu.h | 2 +
src/pixmaps.c | 604 ++++++++
src/savefile.c | 2 +-
src/signalwindow.c | 14 +-
src/status.c | 1 +
src/tcl_commands.c | 1 +
src/tree.c | 7 +
src/tree.h | 9 +-
src/treesearch.h | 2 +-
src/treesearch_gtk2.c | 41 +-
src/vcd.c | 14 +
src/vcd.h | 9 +-
src/vcd_keywords.c | 154 +-
src/vcd_keywords.gperf | 8 +
src/vcd_partial.c | 7 +-
src/vcd_recoder.c | 6 +
92 files changed, 4840 insertions(+), 965 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 2a9aeaa..a5e2cb2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1292,3 +1292,36 @@
Added preliminary do-nothing generate support in vermin.
Fixed minmax_valid for partial VCD loader: affects scaling
on floating-point traces.
+3.3.48 04aug13 Fixed infinite loop hang on various helpers executables
+ when extra arguments are specified.
+ Delete changed marker name if it exists when marker is removed.
+ Added "Open Hierarchy" option that will expand the SST and
+ select the hierarchy for a given signal selected in the
+ Signals window.
+ Added preliminary support for FsdbReader.
+ FSDB fix for generate created hierarchies.
+ FSDB fix for new debug info output style to be parsed.
+ Added generate as scope type to VCD/FST/FSDB.
+ Preliminary add for module port direction for FSDB and FST.
+ Display signal direction column in SST if not all signals are
+ declared as FST_VD_IMPLICIT.
+ Fixed GTK warning when hide_sst is enabled and SST is opened
+ then closed.
+ Added extraction of in/out/inout from FSDB into FST with
+ vcd2fst helper executable. (It also converts FSDB to FST.)
+ Added support for SV structures, unions, classes, packages,
+ programs, and interfaces.
+ Updated signal parsing in FST/FSDB to handle NC declarations
+ for arrays in VCD. (i.e., bitranges are missing) Use vcd2fst
+ or the -o option to read NC VCD files with arrays properly.
+ Preliminary support for SV datatypes of bit, logic, int,
+ shortint, longint, byte, enum, and shortreal in VCD and FST.
+ Added sparse array datatype to FST (currently unused by
+ gtkwave).
+ Added support for attribute begin/end in FST. (Currently
+ unused by gtkwave.) This allows embedding of various data
+ inside the structure tree.
+ Added autoraise on entry window on keystrokes or periodically
+ when it exists.
+ Added ability to store $comment in FST files via the attribute
+ mechanism (FST_AT_MISC/FST_MT_COMMENT).
diff --git a/LICENSE.TXT b/LICENSE.TXT
index db42431..47ebc7e 100644
--- a/LICENSE.TXT
+++ b/LICENSE.TXT
@@ -1,6 +1,6 @@
##########################################################################
-GTKWave 3.3.47 Wave Viewer is Copyright (C) 1999-2013 Tony Bybell.
+GTKWave 3.3.48 Wave Viewer is Copyright (C) 1999-2013 Tony Bybell.
Portions of GTKWave are Copyright (C) 1999-2013 Udi Finkelstein.
Context support is Copyright (C) 2007-2013 Kermin Elliott Fleming.
Trace group support is Copyright (C) 2009-2013 Donald Baltus.
diff --git a/Makefile.in b/Makefile.in
index 6813db6..faf7f6d 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -180,6 +180,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -193,6 +196,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -264,6 +269,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/configure b/configure
index 45e92fa..4843442 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for gtkwave 3.3.47.
+# Generated by GNU Autoconf 2.69 for gtkwave 3.3.48.
#
# Report bugs to <bybell at rocketmail.com>.
#
@@ -580,8 +580,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='gtkwave'
PACKAGE_TARNAME='gtkwave'
-PACKAGE_VERSION='3.3.47'
-PACKAGE_STRING='gtkwave 3.3.47'
+PACKAGE_VERSION='3.3.48'
+PACKAGE_STRING='gtkwave 3.3.48'
PACKAGE_BUGREPORT='bybell at rocketmail.com'
PACKAGE_URL=''
@@ -671,6 +671,12 @@ LEX
am__fastdepCC_FALSE
am__fastdepCC_TRUE
CCDEPMODE
+ac_ct_CC
+CFLAGS
+CC
+am__fastdepCXX_FALSE
+am__fastdepCXX_TRUE
+CXXDEPMODE
am__nodep
AMDEPBACKSLASH
AMDEP_FALSE
@@ -680,11 +686,13 @@ am__include
DEPDIR
OBJEXT
EXEEXT
-ac_ct_CC
+ac_ct_CXX
CPPFLAGS
LDFLAGS
-CFLAGS
-CC
+CXXFLAGS
+CXX
+FSDB_LDADD
+FSDB_CFLAGS
AET2_LDADD
AET2_CFLAGS
TK_INCLUDE_SPEC
@@ -802,6 +810,7 @@ enable_stubify
enable_gtk1
enable_fatlines
enable_ae2
+enable_fsdb
enable_dependency_tracking
enable_local_libz
enable_local_libbz2
@@ -813,11 +822,14 @@ enable_largefile
ac_precious_vars='build_alias
host_alias
target_alias
-CC
-CFLAGS
+CXX
+CXXFLAGS
LDFLAGS
LIBS
CPPFLAGS
+CCC
+CC
+CFLAGS
PKG_CONFIG
GTK_CFLAGS
GTK_LIBS
@@ -1368,7 +1380,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures gtkwave 3.3.47 to adapt to many kinds of systems.
+\`configure' configures gtkwave 3.3.48 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1434,7 +1446,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of gtkwave 3.3.47:";;
+ short | recursive ) echo "Configuration of gtkwave 3.3.48:";;
esac
cat <<\_ACEOF
@@ -1460,6 +1472,8 @@ Optional Features:
instead of gtk2.
--enable-fatlines Renders lines as double width in gtkwave.
--enable-ae2 Compiles in AE2 from env var SIMARAMA_BASE location.
+ --enable-fsdb Compiles in FsdbReader from env vars FSDBREADER_HDRS
+ header and FSDBREADER_LIBS library directories.
--enable-dependency-tracking
do not reject slow dependency extractors
--disable-dependency-tracking
@@ -1487,13 +1501,15 @@ Optional Packages:
--with-tk directory containing tk configuration (tkConfig.sh)
Some influential environment variables:
- CC C compiler command
- CFLAGS C compiler flags
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
nonstandard directory <lib dir>
LIBS libraries to pass to the linker, e.g. -l<library>
CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
you have headers in a nonstandard directory <include dir>
+ CC C compiler command
+ CFLAGS C compiler flags
PKG_CONFIG path to pkg-config utility
GTK_CFLAGS C compiler flags for GTK, overriding pkg-config
GTK_LIBS linker flags for GTK, overriding pkg-config
@@ -1576,7 +1592,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-gtkwave configure 3.3.47
+gtkwave configure 3.3.48
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1590,6 +1606,44 @@ fi
## Autoconf initialization. ##
## ------------------------ ##
+# ac_fn_cxx_try_compile LINENO
+# ----------------------------
+# Try to compile conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_compile ()
+{
+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+ rm -f conftest.$ac_objext
+ if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ grep -v '^ *+' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ mv -f conftest.er1 conftest.err
+ fi
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then :
+ ac_retval=0
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_retval=1
+fi
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+ as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_compile
+
# ac_fn_c_try_compile LINENO
# --------------------------
# Try to compile conftest.$ac_ext, and return whether this succeeded.
@@ -2182,7 +2236,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by gtkwave $as_me 3.3.47, which was
+It was created by gtkwave $as_me 3.3.48, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -3049,7 +3103,7 @@ fi
# Define the identity of the package.
PACKAGE='gtkwave'
- VERSION='3.3.47'
+ VERSION='3.3.48'
cat >>confdefs.h <<_ACEOF
@@ -3279,6 +3333,15 @@ if test "X$SIMARAMA_BASE" = "X" ; then
SIMARAMA_BASE="/afs/awd/projects/simarama/releases/latest"
fi
+# ------------- Set fsdbreader base -------------------
+if test "X$FSDBREADER_HDRS" = "X" ; then
+ FSDBREADER_HDRS="/pub/FsdbReader"
+fi
+if test "X$FSDBREADER_LIBS" = "X" ; then
+ FSDBREADER_LIBS="/pub/FsdbReader"
+fi
+
+
# Checks for build options
# ------------- Inline -------------------
@@ -4097,65 +4160,218 @@ fi
-# Checks for programs.
-# AC_PROG_CXX # not needed as gtkwave and related programs don't use c++
-for ac_prog in gawk mawk nawk awk
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_AWK+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if FsdbReader support should be used" >&5
+$as_echo_n "checking if FsdbReader support should be used... " >&6; }
+
+FFR_CFLAGS=
+FSDB_LDADD=
+FFR=no
+# Check whether --enable-fsdb was given.
+if test "${enable_fsdb+set}" = set; then :
+ enableval=$enable_fsdb;
+if test "X$enable_fsdb" = "Xno" ; then
+ FFR=no
+else
+ FFR=yes
+fi
+
+else
+
+FFR=no
+
+fi
+
+
+if test "X$FFR" = "Xyes" ; then
+ as_ac_File=`$as_echo "ac_cv_file_"$FSDBREADER_LIBS/libnffr.so"" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"$FSDBREADER_LIBS/libnffr.so\"" >&5
+$as_echo_n "checking for \"$FSDBREADER_LIBS/libnffr.so\"... " >&6; }
+if eval \${$as_ac_File+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test -n "$AWK"; then
- ac_cv_prog_AWK="$AWK" # Let the user override the test.
+ test "$cross_compiling" = yes &&
+ as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r ""$FSDBREADER_LIBS/libnffr.so""; then
+ eval "$as_ac_File=yes"
else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_AWK="$ac_prog"
- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
- break 2
- fi
-done
- done
-IFS=$as_save_IFS
+ eval "$as_ac_File=no"
+fi
+fi
+eval ac_res=\$$as_ac_File
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
+ FSDB_SO=yes
+else
+ FSDB_SO=no
+fi
+
+
+ if test "X$FSDB_SO" = "Xyes" ; then
+ FSDB_CFLAGS="-DFSDB_IS_PRESENT -I$FSDBREADER_HDRS"
+ FSDB_LDADD="$FSDBREADER_LIBS/libnffr.so"
+ else
+ as_ac_File=`$as_echo "ac_cv_file_"$FSDBREADER_LIBS/libnffr.a"" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"$FSDBREADER_LIBS/libnffr.a\"" >&5
+$as_echo_n "checking for \"$FSDBREADER_LIBS/libnffr.a\"... " >&6; }
+if eval \${$as_ac_File+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ test "$cross_compiling" = yes &&
+ as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r ""$FSDBREADER_LIBS/libnffr.a""; then
+ eval "$as_ac_File=yes"
+else
+ eval "$as_ac_File=no"
fi
fi
-AWK=$ac_cv_prog_AWK
-if test -n "$AWK"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
-$as_echo "$AWK" >&6; }
+eval ac_res=\$$as_ac_File
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
+ FSDB_A=yes
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ FSDB_A=no
+fi
+
+ if test "X$FSDB_A" = "Xyes" ; then
+ FSDB_CFLAGS="-DFSDB_IS_PRESENT -I$FSDBREADER_HDRS"
+ FSDB_LDADD="$FSDBREADER_LIBS/libnffr.a"
+ else
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: FSDB reader library not found, skipping." >&5
+$as_echo "$as_me: WARNING: FSDB reader library not found, skipping." >&2;}
+
+ fi
+ fi
+
+ as_ac_File=`$as_echo "ac_cv_file_"$FSDBREADER_LIBS/libnsys.so"" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"$FSDBREADER_LIBS/libnsys.so\"" >&5
+$as_echo_n "checking for \"$FSDBREADER_LIBS/libnsys.so\"... " >&6; }
+if eval \${$as_ac_File+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ test "$cross_compiling" = yes &&
+ as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r ""$FSDBREADER_LIBS/libnsys.so""; then
+ eval "$as_ac_File=yes"
+else
+ eval "$as_ac_File=no"
+fi
+fi
+eval ac_res=\$$as_ac_File
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
+ AFSDB_SO=yes
+else
+ AFSDB_SO=no
+fi
+
+
+ if test "X$AFSDB_SO" = "Xyes" ; then
+ FSDB_CFLAGS="-DFSDB_NSYS_IS_PRESENT $FSDB_CFLAGS"
+ FSDB_LDADD="$FSDBREADER_LIBS/libnsys.so $FSDB_LDADD"
+ else
+
+ as_ac_File=`$as_echo "ac_cv_file_"$FSDBREADER_LIBS/libnsys.a"" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"$FSDBREADER_LIBS/libnsys.a\"" >&5
+$as_echo_n "checking for \"$FSDBREADER_LIBS/libnsys.a\"... " >&6; }
+if eval \${$as_ac_File+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ test "$cross_compiling" = yes &&
+ as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r ""$FSDBREADER_LIBS/libnsys.a""; then
+ eval "$as_ac_File=yes"
+else
+ eval "$as_ac_File=no"
+fi
+fi
+eval ac_res=\$$as_ac_File
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
+ FSDB_A=yes
+else
+ FSDB_A=no
+fi
+
+ if test "X$AFSDB_A" = "Xyes" ; then
+ FSDB_CFLAGS="-DFSDB_NSYS_IS_PRESENT $FSDB_CFLAGS"
+ FSDB_LDADD="$FSDBREADER_LIBS/libnsys.a $FSDB_LDADD"
+ else
+
+ FSDB_CFLAGS=
+ FSDB_LDADD=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: FSDB system library not found, skipping." >&5
+$as_echo "$as_me: WARNING: FSDB system library not found, skipping." >&2;}
+
+ fi
+ fi
+
+ as_ac_File=`$as_echo "ac_cv_file_"$FSDBREADER_HDRS/ffrAPI.h"" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for \"$FSDBREADER_HDRS/ffrAPI.h\"" >&5
+$as_echo_n "checking for \"$FSDBREADER_HDRS/ffrAPI.h\"... " >&6; }
+if eval \${$as_ac_File+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ test "$cross_compiling" = yes &&
+ as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5
+if test -r ""$FSDBREADER_HDRS/ffrAPI.h""; then
+ eval "$as_ac_File=yes"
+else
+ eval "$as_ac_File=no"
+fi
+fi
+eval ac_res=\$$as_ac_File
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_ac_File"\" = x"yes"; then :
+ FSDB_SOY=yes
+else
+ FSDB_SOY=no
+fi
+
+ if test "X$FSDB_SOY" = "Xno" ; then
+ FSDB_CFLAGS=
+ FSDB_LDADD=
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: FSDB header not found, skipping." >&5
+$as_echo "$as_me: WARNING: FSDB header not found, skipping." >&2;}
+ fi
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
- test -n "$AWK" && break
-done
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; ac_word=$2
+
+
+# Checks for programs.
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+ if test -n "$CCC"; then
+ CXX=$CCC
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
+if ${ac_cv_prog_CXX+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
@@ -4164,7 +4380,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
@@ -4174,28 +4390,32 @@ IFS=$as_save_IFS
fi
fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5
+$as_echo "$CXX" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
+ test -n "$CXX" && break
+ done
fi
-if test -z "$ac_cv_prog_CC"; then
- ac_ct_CC=$CC
- # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_ac_ct_CC+:} false; then :
+if ${ac_cv_prog_ac_ct_CXX+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test -n "$ac_ct_CC"; then
- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
@@ -4204,7 +4424,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_ac_ct_CC="gcc"
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
@@ -4214,17 +4434,21 @@ IFS=$as_save_IFS
fi
fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5
+$as_echo "$ac_ct_CXX" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
- if test "x$ac_ct_CC" = x; then
- CC=""
+
+ test -n "$ac_ct_CXX" && break
+done
+
+ if test "x$ac_ct_CXX" = x; then
+ CXX="g++"
else
case $cross_compiling:$ac_tool_warned in
yes:)
@@ -4232,29 +4456,755 @@ yes:)
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
- CC=$ac_ct_CC
+ CXX=$ac_ct_CXX
fi
-else
- CC="$ac_cv_prog_CC"
fi
-if test -z "$CC"; then
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; ac_word=$2
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
-$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_CC+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
- IFS=$as_save_IFS
- test -z "$as_dir" && as_dir=.
+ fi
+fi
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+ ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+done
+
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C++ compiler works" >&5
+$as_echo_n "checking whether the C++ compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
+
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+if test -z "$ac_file"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C++ compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler default output file name" >&5
+$as_echo_n "checking for C++ compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
+
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+ { { ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }
+ if { ac_try='./conftest$ac_cv_exeext'
+ { { case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
+
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then :
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5
+$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; }
+if ${ac_cv_cxx_compiler_gnu+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_compiler_gnu=yes
+else
+ ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5
+$as_echo "$ac_cv_cxx_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+ GXX=yes
+else
+ GXX=
+fi
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5
+$as_echo_n "checking whether $CXX accepts -g... " >&6; }
+if ${ac_cv_prog_cxx_g+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+ ac_cxx_werror_flag=yes
+ ac_cv_prog_cxx_g=no
+ CXXFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_prog_cxx_g=yes
+else
+ CXXFLAGS=""
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+else
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+ CXXFLAGS="-g"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+ ac_cv_prog_cxx_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5
+$as_echo "$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo this is the am__doit target
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# Ignore all kinds of additional output from 'make'.
+case `$am_make -s -f confmf 2> /dev/null` in #(
+*the\ am__doit\ target*)
+ am__include=include
+ am__quote=
+ _am_result=GNU
+ ;;
+esac
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ case `$am_make -s -f confmf 2> /dev/null` in #(
+ *the\ am__doit\ target*)
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ ;;
+ esac
+fi
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+ enableval=$enable_dependency_tracking;
+fi
+
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+ am__nodep='_no'
+fi
+ if test "x$enable_dependency_tracking" != xno; then
+ AMDEP_TRUE=
+ AMDEP_FALSE='#'
+else
+ AMDEP_TRUE='#'
+ AMDEP_FALSE=
+fi
+
+
+
+depcc="$CXX" am_compiler_list=
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CXX_dependencies_compiler_type+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then
+ # We make a subdir and do the tests there. Otherwise we can end up
+ # making bogus files that we don't know about and never remove. For
+ # instance it was reported that on HP-UX the gcc test will end up
+ # making a dummy file named 'D' -- because '-MD' means "put the output
+ # in D".
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ # Copy depcomp to subdir because otherwise we won't find it if we're
+ # using a relative directory.
+ cp "$am_depcomp" conftest.dir
+ cd conftest.dir
+ # We will build objects and dependencies in a subdirectory because
+ # it helps to detect inapplicable dependency modes. For instance
+ # both Tru64's cc and ICC support -MD to output dependencies as a
+ # side effect of compilation, but ICC will put the dependencies in
+ # the current directory while Tru64 will put them in the object
+ # directory.
+ mkdir sub
+
+ am_cv_CXX_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ am__universal=false
+ case " $depcc " in #(
+ *\ -arch\ *\ -arch\ *) am__universal=true ;;
+ esac
+
+ for depmode in $am_compiler_list; do
+ # Setup a source with many dependencies, because some compilers
+ # like to wrap large dependency lists on column 80 (with \), and
+ # we should not choose a depcomp mode which is confused by this.
+ #
+ # We need to recreate these files for each test, as the compiler may
+ # overwrite some of them when testing with obscure command lines.
+ # This happens at least with the AIX C compiler.
+ : > sub/conftest.c
+ for i in 1 2 3 4 5 6; do
+ echo '#include "conftst'$i'.h"' >> sub/conftest.c
+ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with
+ # Solaris 10 /bin/sh.
+ echo '/* dummy */' > sub/conftst$i.h
+ done
+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf
+
+ # We check with '-c' and '-o' for the sake of the "dashmstdout"
+ # mode. It turns out that the SunPro C++ compiler does not properly
+ # handle '-M -o', and we need to detect this. Also, some Intel
+ # versions had trouble with output in subdirs.
+ am__obj=sub/conftest.${OBJEXT-o}
+ am__minus_obj="-o $am__obj"
+ case $depmode in
+ gcc)
+ # This depmode causes a compiler race in universal mode.
+ test "$am__universal" = false || continue
+ ;;
+ nosideeffect)
+ # After this tag, mechanisms are not by side-effect, so they'll
+ # only be used when explicitly requested.
+ if test "x$enable_dependency_tracking" = xyes; then
+ continue
+ else
+ break
+ fi
+ ;;
+ msvc7 | msvc7msys | msvisualcpp | msvcmsys)
+ # This compiler won't grok '-c -o', but also, the minuso test has
+ # not run yet. These depmodes are late enough in the game, and
+ # so weak that their functioning should not be impacted.
+ am__obj=conftest.${OBJEXT-o}
+ am__minus_obj=
+ ;;
+ none) break ;;
+ esac
+ if depmode=$depmode \
+ source=sub/conftest.c object=$am__obj \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \
+ >/dev/null 2>conftest.err &&
+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 &&
+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 &&
+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then
+ # icc doesn't choke on unknown options, it will just issue warnings
+ # or remarks (even with -Werror). So we grep stderr for any message
+ # that says an option was ignored or not supported.
+ # When given -MP, icc 7.0 and 7.1 complain thusly:
+ # icc: Command line warning: ignoring option '-M'; no argument required
+ # The diagnosis changed in icc 8.0:
+ # icc: Command line remark: option '-MP' not supported
+ if (grep 'ignoring option' conftest.err ||
+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else
+ am_cv_CXX_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+ am__fastdepCXX_TRUE=
+ am__fastdepCXX_FALSE='#'
+else
+ am__fastdepCXX_TRUE='#'
+ am__fastdepCXX_FALSE=
+fi
+
+
+for ac_prog in gawk mawk nawk awk
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AWK+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AWK"; then
+ ac_cv_prog_AWK="$AWK" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AWK="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AWK=$ac_cv_prog_AWK
+if test -n "$AWK"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5
+$as_echo "$AWK" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+else
+ CC="$ac_cv_prog_CC"
+fi
+
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_CC+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
ac_cv_prog_CC="${ac_tool_prefix}cc"
@@ -4403,322 +5353,72 @@ do
ac_cv_prog_ac_ct_CC="$ac_prog"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
- fi
-done
- done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
- test -n "$ac_ct_CC" && break
-done
-
- if test "x$ac_ct_CC" = x; then
- CC=""
- else
- case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
- CC=$ac_ct_CC
- fi
-fi
-
-fi
-
-
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
-
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
- { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compiler $ac_option >&5") 2>conftest.err
- ac_status=$?
- if test -s conftest.err; then
- sed '10a\
-... rest of stderr output deleted ...
- 10q' conftest.err >conftest.er1
- cat conftest.er1 >&5
- fi
- rm -f conftest.er1 conftest.err
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
-done
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
-
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
-
-ac_rmfiles=
-for ac_file in $ac_files
-do
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- * ) ac_rmfiles="$ac_rmfiles $ac_file";;
- esac
-done
-rm -f $ac_rmfiles
-
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link_default") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
- # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile. We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
- ;;
- [ab].out )
- # We found the default executable, but exeext='' is most
- # certainly right.
- break;;
- *.* )
- if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
- then :; else
- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- fi
- # We set ac_cv_exeext here because the later test for it is not
- # safe: cross compilers may not add the suffix if given an `-o'
- # argument, so we may need to know it at that point already.
- # Even if this section looks crufty: it has the advantage of
- # actually working.
- break;;
- * )
- break;;
- esac
+ fi
done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
+ done
+IFS=$as_save_IFS
-else
- ac_file=''
fi
-if test -z "$ac_file"; then :
+fi
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
+else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
- # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
- test -f "$ac_file" || continue
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
- *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
- break;;
- * ) break;;
- esac
-done
-else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
+ test -n "$ac_ct_CC" && break
+done
- ;
- return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run. If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
- { { ac_try="$ac_link"
-case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_link") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }
- if { ac_try='./conftest$ac_cv_exeext'
- { { case "(($ac_try" in
- *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
- *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_try") 2>&5
- ac_status=$?
- $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; }; then
- cross_compiling=no
+ if test "x$ac_ct_CC" = x; then
+ CC=""
else
- if test "$cross_compiling" = maybe; then
- cross_compiling=yes
- else
- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
- fi
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
+fi
-int
-main ()
-{
- ;
- return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
+
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+ { { ac_try="$ac_compiler $ac_option >&5"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
$as_echo "$ac_try_echo"; } >&5
- (eval "$ac_compile") 2>&5
+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err
ac_status=$?
+ if test -s conftest.err; then
+ sed '10a\
+... rest of stderr output deleted ...
+ 10q' conftest.err >conftest.er1
+ cat conftest.er1 >&5
+ fi
+ rm -f conftest.er1 conftest.err
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
- test $ac_status = 0; }; then :
- for ac_file in conftest.o conftest.obj conftest.*; do
- test -f "$ac_file" || continue;
- case $ac_file in
- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
- *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
- break;;
- esac
+ test $ac_status = 0; }
done
-else
- $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
if ${ac_cv_c_compiler_gnu+:} false; then :
@@ -4929,69 +5629,6 @@ ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_c_compiler_gnu
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
-
-
-am_make=${MAKE-make}
-cat > confinc << 'END'
-am__doit:
- @echo this is the am__doit target
-.PHONY: am__doit
-END
-# If we don't find an include directive, just comment out the code.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-am__include="#"
-am__quote=
-_am_result=none
-# First try GNU make style include.
-echo "include confinc" > confmf
-# Ignore all kinds of additional output from 'make'.
-case `$am_make -s -f confmf 2> /dev/null` in #(
-*the\ am__doit\ target*)
- am__include=include
- am__quote=
- _am_result=GNU
- ;;
-esac
-# Now try BSD make style include.
-if test "$am__include" = "#"; then
- echo '.include "confinc"' > confmf
- case `$am_make -s -f confmf 2> /dev/null` in #(
- *the\ am__doit\ target*)
- am__include=.include
- am__quote="\""
- _am_result=BSD
- ;;
- esac
-fi
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
- enableval=$enable_dependency_tracking;
-fi
-
-if test "x$enable_dependency_tracking" != xno; then
- am_depcomp="$ac_aux_dir/depcomp"
- AMDEPBACKSLASH='\'
- am__nodep='_no'
-fi
- if test "x$enable_dependency_tracking" != xno; then
- AMDEP_TRUE=
- AMDEP_FALSE='#'
-else
- AMDEP_TRUE='#'
- AMDEP_FALSE=
-fi
-
-
depcc="$CC" am_compiler_list=
@@ -9595,6 +10232,9 @@ ac_config_files="$ac_config_files Makefile doc/Makefile contrib/Makefile contrib
AET2_CFLAGS : $AET2_CFLAGS
AET2_LDADD : $AET2_LDADD
+ FSDB_CFLAGS : $FSDB_CFLAGS
+ FSDB_LDADD : $FSDB_LDADD
+
EXTLOAD_CFLAGS : $EXTLOAD_CFLAGS
TCL_INCLUDE_SPEC : $TCL_INCLUDE_SPEC
@@ -9651,6 +10291,9 @@ $as_echo "$as_me:
AET2_CFLAGS : $AET2_CFLAGS
AET2_LDADD : $AET2_LDADD
+ FSDB_CFLAGS : $FSDB_CFLAGS
+ FSDB_LDADD : $FSDB_LDADD
+
EXTLOAD_CFLAGS : $EXTLOAD_CFLAGS
TCL_INCLUDE_SPEC : $TCL_INCLUDE_SPEC
@@ -9819,6 +10462,10 @@ if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
as_fn_error $? "conditional \"AMDEP\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
as_fn_error $? "conditional \"am__fastdepCC\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -10220,7 +10867,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by gtkwave $as_me 3.3.47, which was
+This file was extended by gtkwave $as_me 3.3.48, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -10286,7 +10933,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-gtkwave config.status 3.3.47
+gtkwave config.status 3.3.48
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
diff --git a/configure.ac b/configure.ac
index 54bfbce..4cd5b97 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
-AC_INIT(gtkwave, 3.3.47, bybell at rocketmail.com)
+AC_INIT(gtkwave, 3.3.48, bybell at rocketmail.com)
AC_CONFIG_SRCDIR([src/vcd.c])
AM_INIT_AUTOMAKE
AC_CONFIG_HEADER([config.h])
@@ -66,6 +66,15 @@ if test "X$SIMARAMA_BASE" = "X" ; then
SIMARAMA_BASE="/afs/awd/projects/simarama/releases/latest"
fi
+# ------------- Set fsdbreader base -------------------
+if test "X$FSDBREADER_HDRS" = "X" ; then
+ FSDBREADER_HDRS="/pub/FsdbReader"
+fi
+if test "X$FSDBREADER_LIBS" = "X" ; then
+ FSDBREADER_LIBS="/pub/FsdbReader"
+fi
+
+
# Checks for build options
# ------------- Inline -------------------
@@ -318,8 +327,81 @@ AC_SUBST(AET2_CFLAGS)
AC_SUBST(AET2_LDADD)
+AC_MSG_CHECKING([if FsdbReader support should be used])
+
+FFR_CFLAGS=
+FSDB_LDADD=
+FFR=no
+AC_ARG_ENABLE([fsdb],
+[ --enable-fsdb Compiles in FsdbReader from env vars FSDBREADER_HDRS
+ header and FSDBREADER_LIBS library directories.],
+[
+if test "X$enable_fsdb" = "Xno" ; then
+ FFR=no
+else
+ FFR=yes
+fi
+],
+[
+FFR=no
+])
+
+if test "X$FFR" = "Xyes" ; then
+ AC_CHECK_FILE("$FSDBREADER_LIBS/libnffr.so", FSDB_SO=yes, FSDB_SO=no)
+
+ if test "X$FSDB_SO" = "Xyes" ; then
+ FSDB_CFLAGS="-DFSDB_IS_PRESENT -I$FSDBREADER_HDRS"
+ FSDB_LDADD="$FSDBREADER_LIBS/libnffr.so"
+ else
+
+ AC_CHECK_FILE("$FSDBREADER_LIBS/libnffr.a", FSDB_A=yes, FSDB_A=no)
+ if test "X$FSDB_A" = "Xyes" ; then
+ FSDB_CFLAGS="-DFSDB_IS_PRESENT -I$FSDBREADER_HDRS"
+ FSDB_LDADD="$FSDBREADER_LIBS/libnffr.a"
+ else
+
+ AC_MSG_WARN([FSDB reader library not found, skipping.])
+
+ fi
+ fi
+
+ AC_CHECK_FILE("$FSDBREADER_LIBS/libnsys.so", AFSDB_SO=yes, AFSDB_SO=no)
+
+ if test "X$AFSDB_SO" = "Xyes" ; then
+ FSDB_CFLAGS="-DFSDB_NSYS_IS_PRESENT $FSDB_CFLAGS"
+ FSDB_LDADD="$FSDBREADER_LIBS/libnsys.so $FSDB_LDADD"
+ else
+
+ AC_CHECK_FILE("$FSDBREADER_LIBS/libnsys.a", FSDB_A=yes, FSDB_A=no)
+ if test "X$AFSDB_A" = "Xyes" ; then
+ FSDB_CFLAGS="-DFSDB_NSYS_IS_PRESENT $FSDB_CFLAGS"
+ FSDB_LDADD="$FSDBREADER_LIBS/libnsys.a $FSDB_LDADD"
+ else
+
+ FSDB_CFLAGS=
+ FSDB_LDADD=
+ AC_MSG_WARN([FSDB system library not found, skipping.])
+
+ fi
+ fi
+
+ AC_CHECK_FILE("$FSDBREADER_HDRS/ffrAPI.h", FSDB_SOY=yes, FSDB_SOY=no)
+ if test "X$FSDB_SOY" = "Xno" ; then
+ FSDB_CFLAGS=
+ FSDB_LDADD=
+ AC_MSG_WARN([FSDB header not found, skipping.])
+ fi
+
+else
+ AC_MSG_RESULT([no])
+fi
+
+AC_SUBST(FSDB_CFLAGS)
+AC_SUBST(FSDB_LDADD)
+
+
# Checks for programs.
-# AC_PROG_CXX # not needed as gtkwave and related programs don't use c++
+AC_PROG_CXX
AC_PROG_AWK
AC_PROG_CC
AC_PROG_MAKE_SET
@@ -820,6 +902,9 @@ AC_MSG_NOTICE([
AET2_CFLAGS : $AET2_CFLAGS
AET2_LDADD : $AET2_LDADD
+ FSDB_CFLAGS : $FSDB_CFLAGS
+ FSDB_LDADD : $FSDB_LDADD
+
EXTLOAD_CFLAGS : $EXTLOAD_CFLAGS
TCL_INCLUDE_SPEC : $TCL_INCLUDE_SPEC
diff --git a/contrib/Makefile.in b/contrib/Makefile.in
index a9d6fe5..880ae9b 100644
--- a/contrib/Makefile.in
+++ b/contrib/Makefile.in
@@ -156,6 +156,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -169,6 +172,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -240,6 +245,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/bundle_for_osx/Info-gtkwave.plist b/contrib/bundle_for_osx/Info-gtkwave.plist
index 92ba1a4..1be8c58 100644
--- a/contrib/bundle_for_osx/Info-gtkwave.plist
+++ b/contrib/bundle_for_osx/Info-gtkwave.plist
@@ -8,7 +8,7 @@
<key>CFBundleExecutable</key>
<string>gtkwave</string>
<key>CFBundleGetInfoString</key>
- <string>3.3.47, (C) 1999-2013 Tony Bybell http://gtkwave.sourceforge.net</string>
+ <string>3.3.48, (C) 1999-2013 Tony Bybell http://gtkwave.sourceforge.net</string>
<key>CFBundleIconFile</key>
<string>gtkwave.icns</string>
<key>CFBundleIdentifier</key>
@@ -18,11 +18,11 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
- <string>3.3.47</string>
+ <string>3.3.48</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
- <string>3.3.47</string>
+ <string>3.3.48</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright 1999 - 2013 Tony Bybell, GNU General Public License.</string>
<key>LSMinimumSystemVersion</key>
diff --git a/contrib/pccts/IBM_VISUAL_AGE_PROJECTS/Makefile.in b/contrib/pccts/IBM_VISUAL_AGE_PROJECTS/Makefile.in
index 695a9a6..e5c1fd0 100644
--- a/contrib/pccts/IBM_VISUAL_AGE_PROJECTS/Makefile.in
+++ b/contrib/pccts/IBM_VISUAL_AGE_PROJECTS/Makefile.in
@@ -96,6 +96,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -109,6 +112,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -180,6 +185,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/Makefile.in b/contrib/pccts/Makefile.in
index e10887e..286115d 100644
--- a/contrib/pccts/Makefile.in
+++ b/contrib/pccts/Makefile.in
@@ -156,6 +156,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -169,6 +172,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -240,6 +245,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/antlr/Makefile.in b/contrib/pccts/antlr/Makefile.in
index 6f7164e..ff0fed2 100644
--- a/contrib/pccts/antlr/Makefile.in
+++ b/contrib/pccts/antlr/Makefile.in
@@ -145,6 +145,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -158,6 +161,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -229,6 +234,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/dlg/Makefile.in b/contrib/pccts/dlg/Makefile.in
index 5610995..6415b09 100644
--- a/contrib/pccts/dlg/Makefile.in
+++ b/contrib/pccts/dlg/Makefile.in
@@ -143,6 +143,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -156,6 +159,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -227,6 +232,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/h/Makefile.in b/contrib/pccts/h/Makefile.in
index 3d6f8b5..a06f26b 100644
--- a/contrib/pccts/h/Makefile.in
+++ b/contrib/pccts/h/Makefile.in
@@ -96,6 +96,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -109,6 +112,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -180,6 +185,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/sorcerer/Makefile.in b/contrib/pccts/sorcerer/Makefile.in
index ff461c6..6c85656 100644
--- a/contrib/pccts/sorcerer/Makefile.in
+++ b/contrib/pccts/sorcerer/Makefile.in
@@ -185,6 +185,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -198,6 +201,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -269,6 +274,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/sorcerer/h/Makefile.in b/contrib/pccts/sorcerer/h/Makefile.in
index 5d36a92..a6a2a01 100644
--- a/contrib/pccts/sorcerer/h/Makefile.in
+++ b/contrib/pccts/sorcerer/h/Makefile.in
@@ -96,6 +96,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -109,6 +112,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -180,6 +185,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/sorcerer/lib/Makefile.in b/contrib/pccts/sorcerer/lib/Makefile.in
index f78aacc..002833c 100644
--- a/contrib/pccts/sorcerer/lib/Makefile.in
+++ b/contrib/pccts/sorcerer/lib/Makefile.in
@@ -100,6 +100,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -113,6 +116,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -184,6 +189,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/sorcerer/test/Makefile.in b/contrib/pccts/sorcerer/test/Makefile.in
index 387c27f..cdded32 100644
--- a/contrib/pccts/sorcerer/test/Makefile.in
+++ b/contrib/pccts/sorcerer/test/Makefile.in
@@ -156,6 +156,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -169,6 +172,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -240,6 +245,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/sorcerer/test/test7/Makefile.in b/contrib/pccts/sorcerer/test/test7/Makefile.in
index 8896b6c..2cca819 100644
--- a/contrib/pccts/sorcerer/test/test7/Makefile.in
+++ b/contrib/pccts/sorcerer/test/test7/Makefile.in
@@ -96,6 +96,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -109,6 +112,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -180,6 +185,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/sorcerer/testcpp/Makefile.in b/contrib/pccts/sorcerer/testcpp/Makefile.in
index 33098de..9c4171e 100644
--- a/contrib/pccts/sorcerer/testcpp/Makefile.in
+++ b/contrib/pccts/sorcerer/testcpp/Makefile.in
@@ -169,6 +169,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -182,6 +185,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -253,6 +258,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/support/DECmms/Makefile.in b/contrib/pccts/support/DECmms/Makefile.in
index 808e1dc..75e91aa 100644
--- a/contrib/pccts/support/DECmms/Makefile.in
+++ b/contrib/pccts/support/DECmms/Makefile.in
@@ -96,6 +96,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -109,6 +112,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -180,6 +185,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/support/Makefile.in b/contrib/pccts/support/Makefile.in
index 0b13cd5..99f2c22 100644
--- a/contrib/pccts/support/Makefile.in
+++ b/contrib/pccts/support/Makefile.in
@@ -156,6 +156,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -169,6 +172,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -240,6 +245,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/support/genmk/Makefile.in b/contrib/pccts/support/genmk/Makefile.in
index 93fca2e..14b4566 100644
--- a/contrib/pccts/support/genmk/Makefile.in
+++ b/contrib/pccts/support/genmk/Makefile.in
@@ -137,6 +137,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -150,6 +153,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -221,6 +226,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/support/rexpr/Makefile.in b/contrib/pccts/support/rexpr/Makefile.in
index 559d013..e0d4531 100644
--- a/contrib/pccts/support/rexpr/Makefile.in
+++ b/contrib/pccts/support/rexpr/Makefile.in
@@ -137,6 +137,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -150,6 +153,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -221,6 +226,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/support/set/Makefile.in b/contrib/pccts/support/set/Makefile.in
index a81283f..637affd 100644
--- a/contrib/pccts/support/set/Makefile.in
+++ b/contrib/pccts/support/set/Makefile.in
@@ -96,6 +96,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -109,6 +112,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -180,6 +185,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/support/sym/Makefile.in b/contrib/pccts/support/sym/Makefile.in
index d003db2..b21c9fc 100644
--- a/contrib/pccts/support/sym/Makefile.in
+++ b/contrib/pccts/support/sym/Makefile.in
@@ -96,6 +96,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -109,6 +112,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -180,6 +185,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/pccts/testcpp/Makefile.in b/contrib/pccts/testcpp/Makefile.in
index d803774..584f51f 100644
--- a/contrib/pccts/testcpp/Makefile.in
+++ b/contrib/pccts/testcpp/Makefile.in
@@ -96,6 +96,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -109,6 +112,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -180,6 +185,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/rtlbrowse/Makefile.in b/contrib/rtlbrowse/Makefile.in
index 1d2d452..e3e776e 100644
--- a/contrib/rtlbrowse/Makefile.in
+++ b/contrib/rtlbrowse/Makefile.in
@@ -201,6 +201,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -214,6 +217,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -285,6 +290,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/contrib/rtlbrowse/vlex.l b/contrib/rtlbrowse/vlex.l
index 1cc909c..de60c1d 100644
--- a/contrib/rtlbrowse/vlex.l
+++ b/contrib/rtlbrowse/vlex.l
@@ -168,7 +168,6 @@ endtable { return V_KW; }
specify { return V_KW; }
endspecify { return V_KW; }
-
automatic { return V_KW_2005; }
cell { return V_KW_2005; }
config { return V_KW_2005; }
@@ -193,6 +192,13 @@ signed { return V_KW_2005; }
use { return V_KW_2005; }
uwire { return V_KW_2005; }
+bit { return V_KW_2005; }
+logic { return V_KW_2005; }
+int { return V_KW_2005; }
+shortint { return V_KW_2005; }
+longint { return V_KW_2005; }
+byte { return V_KW_2005; }
+enum { return V_KW_2005; }
macromodule { return V_MODULE; }
module { return V_MODULE; }
diff --git a/contrib/vermin/Makefile.in b/contrib/vermin/Makefile.in
index f8d953f..7d38635 100644
--- a/contrib/vermin/Makefile.in
+++ b/contrib/vermin/Makefile.in
@@ -141,6 +141,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -154,6 +157,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -225,6 +230,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 0023a4f..969feb1 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -127,6 +127,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -140,6 +143,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -211,6 +216,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/examples/Makefile.in b/examples/Makefile.in
index d30b31b..ac26a1c 100644
--- a/examples/Makefile.in
+++ b/examples/Makefile.in
@@ -127,6 +127,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -140,6 +143,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -211,6 +216,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/examples/gtkwaverc b/examples/gtkwaverc
index 00b927a..91ebf85 100644
--- a/examples/gtkwaverc
+++ b/examples/gtkwaverc
@@ -23,6 +23,7 @@ enable_fast_exit yes
disable_empty_gui off
analog_redraw_skip_count 20
splash_disable off
+hide_sst off
sst_dynamic_filter on
use_standard_clicking on
use_toolbutton_interface on
diff --git a/man/Makefile.in b/man/Makefile.in
index 579cc17..9068373 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -129,6 +129,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -142,6 +145,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -213,6 +218,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/share/Makefile.in b/share/Makefile.in
index 9fa528d..dc112c3 100644
--- a/share/Makefile.in
+++ b/share/Makefile.in
@@ -156,6 +156,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -169,6 +172,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -240,6 +245,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/share/applications/Makefile.in b/share/applications/Makefile.in
index f8521d3..ce978f7 100644
--- a/share/applications/Makefile.in
+++ b/share/applications/Makefile.in
@@ -126,6 +126,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -139,6 +142,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -210,6 +215,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/share/icons/Makefile.in b/share/icons/Makefile.in
index e94e770..529821d 100644
--- a/share/icons/Makefile.in
+++ b/share/icons/Makefile.in
@@ -186,6 +186,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -199,6 +202,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -270,6 +275,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/share/icons/gnome/16x16/Makefile.in b/share/icons/gnome/16x16/Makefile.in
index ba41668..37f261a 100644
--- a/share/icons/gnome/16x16/Makefile.in
+++ b/share/icons/gnome/16x16/Makefile.in
@@ -156,6 +156,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -169,6 +172,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -240,6 +245,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/share/icons/gnome/16x16/mimetypes/Makefile.in b/share/icons/gnome/16x16/mimetypes/Makefile.in
index 96e270f..0f20dc5 100644
--- a/share/icons/gnome/16x16/mimetypes/Makefile.in
+++ b/share/icons/gnome/16x16/mimetypes/Makefile.in
@@ -126,6 +126,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -139,6 +142,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -210,6 +215,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/share/icons/gnome/32x32/Makefile.in b/share/icons/gnome/32x32/Makefile.in
index b07b824..5bb6d1f 100644
--- a/share/icons/gnome/32x32/Makefile.in
+++ b/share/icons/gnome/32x32/Makefile.in
@@ -156,6 +156,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -169,6 +172,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -240,6 +245,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/share/icons/gnome/32x32/mimetypes/Makefile.in b/share/icons/gnome/32x32/mimetypes/Makefile.in
index 273bd07..29becf4 100644
--- a/share/icons/gnome/32x32/mimetypes/Makefile.in
+++ b/share/icons/gnome/32x32/mimetypes/Makefile.in
@@ -126,6 +126,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -139,6 +142,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -210,6 +215,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/share/icons/gnome/48x48/Makefile.in b/share/icons/gnome/48x48/Makefile.in
index de6bbee..66e8716 100644
--- a/share/icons/gnome/48x48/Makefile.in
+++ b/share/icons/gnome/48x48/Makefile.in
@@ -156,6 +156,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -169,6 +172,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -240,6 +245,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/share/icons/gnome/48x48/mimetypes/Makefile.in b/share/icons/gnome/48x48/mimetypes/Makefile.in
index e83192c..ba884f7 100644
--- a/share/icons/gnome/48x48/mimetypes/Makefile.in
+++ b/share/icons/gnome/48x48/mimetypes/Makefile.in
@@ -126,6 +126,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -139,6 +142,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -210,6 +215,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/share/icons/gnome/Makefile.in b/share/icons/gnome/Makefile.in
index 0cf2b8c..ed022dd 100644
--- a/share/icons/gnome/Makefile.in
+++ b/share/icons/gnome/Makefile.in
@@ -156,6 +156,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -169,6 +172,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -240,6 +245,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/share/mime/Makefile.in b/share/mime/Makefile.in
index d3d3df3..de24086 100644
--- a/share/mime/Makefile.in
+++ b/share/mime/Makefile.in
@@ -156,6 +156,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -169,6 +172,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -240,6 +245,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/share/mime/packages/Makefile.in b/share/mime/packages/Makefile.in
index 5a74baa..fac3f37 100644
--- a/share/mime/packages/Makefile.in
+++ b/share/mime/packages/Makefile.in
@@ -126,6 +126,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -139,6 +142,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -210,6 +215,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/src/Makefile.am b/src/Makefile.am
index cfc516c..26a58de 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -14,7 +14,12 @@ LIBCOCOA_LDADD = ./cocoa/libgtkwmacintegration.a $(COCOA_GTK_LDADD)
bin_PROGRAMS= gtkwave twinwave
-AM_CFLAGS= -I$(srcdir)/.. -I$(srcdir)/helpers $(FASTTREE_CFLAGS) $(GTK_CFLAGS) $(LIBLZMA_CFLAGS) $(LIBZ_CFLAGS) $(LIBBZ2_CFLAGS) $(LIBFST_CFLAGS) $(AET2_CFLAGS) $(TCL_INCLUDE_SPEC) $(TCL_DEFADD) $(TK_INCLUDE_SPEC) $(EXTLOAD_CFLAGS) $(LIBJUDY_CFLAGS) $(INLINE_ASM) $(GTK_MAC_CFLAGS) $(GCONF_CFLAGS) $(LIBCOCOA_CFLAGS) $(GTK_UNIX_PRINT_CFLAGS)
+AM_CFLAGS= -I$(srcdir)/.. -I$(srcdir)/helpers $(FASTTREE_CFLAGS) $(GTK_CFLAGS) $(LIBLZMA_CFLAGS) \
+ $(LIBZ_CFLAGS) $(LIBBZ2_CFLAGS) $(LIBFST_CFLAGS) $(AET2_CFLAGS) $(FSDB_CFLAGS) $(TCL_INCLUDE_SPEC) \
+ $(TCL_DEFADD) $(TK_INCLUDE_SPEC) $(EXTLOAD_CFLAGS) $(LIBJUDY_CFLAGS) $(INLINE_ASM) \
+ $(GTK_MAC_CFLAGS) $(GCONF_CFLAGS) $(LIBCOCOA_CFLAGS) $(GTK_UNIX_PRINT_CFLAGS)
+
+AM_CXXFLAGS= $(AM_CFLAGS)
./liblzma/libgwlzma.a: $(srcdir)/liblzma/LzmaLib.c $(srcdir)/liblzma/LzmaLib.h
@@ -23,6 +28,7 @@ AM_CFLAGS= -I$(srcdir)/.. -I$(srcdir)/helpers $(FASTTREE_CFLAGS) $(GTK_CFLAGS) $
./cocoa/libgtkwmacintegration.a: $(srcdir)/cocoa/cocoa_misc.c $(srcdir)/cocoa/cocoa_misc.h
gtkwave_SOURCES= \
+ fsdb_wrapper_api.cc fsdb_wrapper_api.h \
baseconvert.h wavewindow.h zoombuttons.h fetchbuttons.h timeentry.h shiftbuttons.h pagebuttons.h edgebuttons.h \
signalwindow.h entry.h file.h status.h search.h showchange.h treesearch.h hiersearch.h renderopt.h markerbox.h \
simplereq.h help.h logfile.h vcd_partial.h mouseover.h mouseover_sigs.h interp.h \
@@ -46,10 +52,9 @@ gtkwave_SOURCES= \
vcd_partial.c vcd_recoder.c vcd_saver.c vcd_saver.h version.h vlist.c vlist.h vzt.c vzt.h wavealloca.h \
wavewindow.c zoombuttons.c
-gtkwave_LDADD= $(LIBCOCOA_LDADD) $(GTK_LIBS) $(LIBLZMA_LDADD) $(LIBZ_LDADD) $(LIBBZ2_LDADD) $(LIBFST_LDADD) $(AET2_LDADD) $(TCL_LDADD) $(TK_LDADD) $(LIBJUDY_LDADD) $(GTK_MAC_LIBS) $(GCONF_LIBS) $(GTK_UNIX_PRINT_LIBS)
+gtkwave_LDADD= $(LIBCOCOA_LDADD) $(GTK_LIBS) $(LIBLZMA_LDADD) $(LIBZ_LDADD) $(LIBBZ2_LDADD) $(LIBFST_LDADD) $(AET2_LDADD) $(FSDB_LDADD) $(TCL_LDADD) $(TK_LDADD) $(LIBJUDY_LDADD) $(GTK_MAC_LIBS) $(GCONF_LIBS) $(GTK_UNIX_PRINT_LIBS)
gtkwave_LDFLAGS = $(COCOA_GTK_LDFLAGS)
-
twinwave_SOURCES= twinwave.c
twinwave_LDADD= $(GTK_LIBS) $(GTK_MAC_LIBS) $(GCONF_LIBS)
diff --git a/src/Makefile.in b/src/Makefile.in
index a6a9098..f51110c 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -62,27 +62,28 @@ CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
-am_gtkwave_OBJECTS = globals.$(OBJEXT) ae2.$(OBJEXT) \
- analyzer.$(OBJEXT) baseconvert.$(OBJEXT) bitvec.$(OBJEXT) \
- bsearch.$(OBJEXT) busy.$(OBJEXT) clipping.$(OBJEXT) \
- color.$(OBJEXT) currenttime.$(OBJEXT) debug.$(OBJEXT) \
- discardbuttons.$(OBJEXT) edgebuttons.$(OBJEXT) entry.$(OBJEXT) \
- extload.$(OBJEXT) fetchbuttons.$(OBJEXT) fgetdynamic.$(OBJEXT) \
- file.$(OBJEXT) fonts.$(OBJEXT) fst.$(OBJEXT) gconf.$(OBJEXT) \
- getopt.$(OBJEXT) getopt1.$(OBJEXT) ghw.$(OBJEXT) \
- ghwlib.$(OBJEXT) hierpack.$(OBJEXT) jrb.$(OBJEXT) \
- help.$(OBJEXT) lxt2_read.$(OBJEXT) lxt_write.$(OBJEXT) \
- vzt_read.$(OBJEXT) hiersearch.$(OBJEXT) interp.$(OBJEXT) \
- logfile.$(OBJEXT) lx2.$(OBJEXT) lxt.$(OBJEXT) main.$(OBJEXT) \
- markerbox.$(OBJEXT) menu.$(OBJEXT) mouseover.$(OBJEXT) \
- mouseover_sigs.$(OBJEXT) pagebuttons.$(OBJEXT) \
- pipeio.$(OBJEXT) pixmaps.$(OBJEXT) print.$(OBJEXT) \
- ptranslate.$(OBJEXT) rc.$(OBJEXT) regex.$(OBJEXT) \
- renderopt.$(OBJEXT) rgb.$(OBJEXT) savefile.$(OBJEXT) \
- search.$(OBJEXT) shiftbuttons.$(OBJEXT) showchange.$(OBJEXT) \
- signalwindow.$(OBJEXT) simplereq.$(OBJEXT) splash.$(OBJEXT) \
- status.$(OBJEXT) strace.$(OBJEXT) symbol.$(OBJEXT) \
- tcl_commands.$(OBJEXT) tcl_helper.$(OBJEXT) tcl_np.$(OBJEXT) \
+am_gtkwave_OBJECTS = fsdb_wrapper_api.$(OBJEXT) globals.$(OBJEXT) \
+ ae2.$(OBJEXT) analyzer.$(OBJEXT) baseconvert.$(OBJEXT) \
+ bitvec.$(OBJEXT) bsearch.$(OBJEXT) busy.$(OBJEXT) \
+ clipping.$(OBJEXT) color.$(OBJEXT) currenttime.$(OBJEXT) \
+ debug.$(OBJEXT) discardbuttons.$(OBJEXT) edgebuttons.$(OBJEXT) \
+ entry.$(OBJEXT) extload.$(OBJEXT) fetchbuttons.$(OBJEXT) \
+ fgetdynamic.$(OBJEXT) file.$(OBJEXT) fonts.$(OBJEXT) \
+ fst.$(OBJEXT) gconf.$(OBJEXT) getopt.$(OBJEXT) \
+ getopt1.$(OBJEXT) ghw.$(OBJEXT) ghwlib.$(OBJEXT) \
+ hierpack.$(OBJEXT) jrb.$(OBJEXT) help.$(OBJEXT) \
+ lxt2_read.$(OBJEXT) lxt_write.$(OBJEXT) vzt_read.$(OBJEXT) \
+ hiersearch.$(OBJEXT) interp.$(OBJEXT) logfile.$(OBJEXT) \
+ lx2.$(OBJEXT) lxt.$(OBJEXT) main.$(OBJEXT) markerbox.$(OBJEXT) \
+ menu.$(OBJEXT) mouseover.$(OBJEXT) mouseover_sigs.$(OBJEXT) \
+ pagebuttons.$(OBJEXT) pipeio.$(OBJEXT) pixmaps.$(OBJEXT) \
+ print.$(OBJEXT) ptranslate.$(OBJEXT) rc.$(OBJEXT) \
+ regex.$(OBJEXT) renderopt.$(OBJEXT) rgb.$(OBJEXT) \
+ savefile.$(OBJEXT) search.$(OBJEXT) shiftbuttons.$(OBJEXT) \
+ showchange.$(OBJEXT) signalwindow.$(OBJEXT) \
+ simplereq.$(OBJEXT) splash.$(OBJEXT) status.$(OBJEXT) \
+ strace.$(OBJEXT) symbol.$(OBJEXT) tcl_commands.$(OBJEXT) \
+ tcl_helper.$(OBJEXT) tcl_np.$(OBJEXT) \
tcl_support_commands.$(OBJEXT) timeentry.$(OBJEXT) \
translate.$(OBJEXT) tree.$(OBJEXT) treesearch.$(OBJEXT) \
tree_component.$(OBJEXT) ttranslate.$(OBJEXT) vcd.$(OBJEXT) \
@@ -99,8 +100,9 @@ gtkwave_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(LIBFST_LDADD) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-gtkwave_LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(gtkwave_LDFLAGS) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+gtkwave_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(gtkwave_LDFLAGS) \
$(LDFLAGS) -o $@
am_twinwave_OBJECTS = twinwave.$(OBJEXT)
twinwave_OBJECTS = $(am_twinwave_OBJECTS)
@@ -138,6 +140,19 @@ AM_V_CCLD = $(am__v_CCLD_ at AM_V@)
am__v_CCLD_ = $(am__v_CCLD_ at AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+AM_V_CXX = $(am__v_CXX_ at AM_V@)
+am__v_CXX_ = $(am__v_CXX_ at AM_DEFAULT_V@)
+am__v_CXX_0 = @echo " CXX " $@;
+am__v_CXX_1 =
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+AM_V_CXXLD = $(am__v_CXXLD_ at AM_V@)
+am__v_CXXLD_ = $(am__v_CXXLD_ at AM_DEFAULT_V@)
+am__v_CXXLD_0 = @echo " CXXLD " $@;
+am__v_CXXLD_1 =
SOURCES = $(gtkwave_SOURCES) $(twinwave_SOURCES)
DIST_SOURCES = $(gtkwave_SOURCES) $(twinwave_SOURCES)
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
@@ -224,6 +239,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -237,6 +255,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -308,6 +328,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -353,8 +374,14 @@ LIBLZMA_CFLAGS = -I$(srcdir)/liblzma $(LIBXZ_CFLAGS)
LIBLZMA_LDADD = ./liblzma/libgwlzma.a $(LIBXZ_LDADD)
LIBCOCOA_CFLAGS = -I$(srcdir)/cocoa
LIBCOCOA_LDADD = ./cocoa/libgtkwmacintegration.a $(COCOA_GTK_LDADD)
-AM_CFLAGS = -I$(srcdir)/.. -I$(srcdir)/helpers $(FASTTREE_CFLAGS) $(GTK_CFLAGS) $(LIBLZMA_CFLAGS) $(LIBZ_CFLAGS) $(LIBBZ2_CFLAGS) $(LIBFST_CFLAGS) $(AET2_CFLAGS) $(TCL_INCLUDE_SPEC) $(TCL_DEFADD) $(TK_INCLUDE_SPEC) $(EXTLOAD_CFLAGS) $(LIBJUDY_CFLAGS) $(INLINE_ASM) $(GTK_MAC_CFLAGS) $(GCONF_CFLAGS) $(LIBCOCOA_CFLAGS) $(GTK_UNIX_PRINT_CFLAGS)
+AM_CFLAGS = -I$(srcdir)/.. -I$(srcdir)/helpers $(FASTTREE_CFLAGS) $(GTK_CFLAGS) $(LIBLZMA_CFLAGS) \
+ $(LIBZ_CFLAGS) $(LIBBZ2_CFLAGS) $(LIBFST_CFLAGS) $(AET2_CFLAGS) $(FSDB_CFLAGS) $(TCL_INCLUDE_SPEC) \
+ $(TCL_DEFADD) $(TK_INCLUDE_SPEC) $(EXTLOAD_CFLAGS) $(LIBJUDY_CFLAGS) $(INLINE_ASM) \
+ $(GTK_MAC_CFLAGS) $(GCONF_CFLAGS) $(LIBCOCOA_CFLAGS) $(GTK_UNIX_PRINT_CFLAGS)
+
+AM_CXXFLAGS = $(AM_CFLAGS)
gtkwave_SOURCES = \
+ fsdb_wrapper_api.cc fsdb_wrapper_api.h \
baseconvert.h wavewindow.h zoombuttons.h fetchbuttons.h timeentry.h shiftbuttons.h pagebuttons.h edgebuttons.h \
signalwindow.h entry.h file.h status.h search.h showchange.h treesearch.h hiersearch.h renderopt.h markerbox.h \
simplereq.h help.h logfile.h vcd_partial.h mouseover.h mouseover_sigs.h interp.h \
@@ -378,7 +405,7 @@ gtkwave_SOURCES = \
vcd_partial.c vcd_recoder.c vcd_saver.c vcd_saver.h version.h vlist.c vlist.h vzt.c vzt.h wavealloca.h \
wavewindow.c zoombuttons.c
-gtkwave_LDADD = $(LIBCOCOA_LDADD) $(GTK_LIBS) $(LIBLZMA_LDADD) $(LIBZ_LDADD) $(LIBBZ2_LDADD) $(LIBFST_LDADD) $(AET2_LDADD) $(TCL_LDADD) $(TK_LDADD) $(LIBJUDY_LDADD) $(GTK_MAC_LIBS) $(GCONF_LIBS) $(GTK_UNIX_PRINT_LIBS)
+gtkwave_LDADD = $(LIBCOCOA_LDADD) $(GTK_LIBS) $(LIBLZMA_LDADD) $(LIBZ_LDADD) $(LIBBZ2_LDADD) $(LIBFST_LDADD) $(AET2_LDADD) $(FSDB_LDADD) $(TCL_LDADD) $(TK_LDADD) $(LIBJUDY_LDADD) $(GTK_MAC_LIBS) $(GCONF_LIBS) $(GTK_UNIX_PRINT_LIBS)
gtkwave_LDFLAGS = $(COCOA_GTK_LDFLAGS)
twinwave_SOURCES = twinwave.c
twinwave_LDADD = $(GTK_LIBS) $(GTK_MAC_LIBS) $(GCONF_LIBS)
@@ -391,7 +418,7 @@ all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
-.SUFFIXES: .c .o .obj
+.SUFFIXES: .c .cc .o .obj
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
@@ -466,7 +493,7 @@ clean-binPROGRAMS:
-test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
gtkwave$(EXEEXT): $(gtkwave_OBJECTS) $(gtkwave_DEPENDENCIES) $(EXTRA_gtkwave_DEPENDENCIES)
@rm -f gtkwave$(EXEEXT)
- $(AM_V_CCLD)$(gtkwave_LINK) $(gtkwave_OBJECTS) $(gtkwave_LDADD) $(LIBS)
+ $(AM_V_CXXLD)$(gtkwave_LINK) $(gtkwave_OBJECTS) $(gtkwave_LDADD) $(LIBS)
twinwave$(EXEEXT): $(twinwave_OBJECTS) $(twinwave_DEPENDENCIES) $(EXTRA_twinwave_DEPENDENCIES)
@rm -f twinwave$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(twinwave_OBJECTS) $(twinwave_LDADD) $(LIBS)
@@ -495,6 +522,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fgetdynamic.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/file.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fonts.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fsdb_wrapper_api.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/fst.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/gconf.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/getopt.Po at am__quote@
@@ -614,6 +642,20 @@ vzt_read.obj: helpers/vzt_read.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC at am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o vzt_read.obj `if test -f 'helpers/vzt_read.c'; then $(CYGPATH_W) 'helpers/vzt_read.c'; else $(CYGPATH_W) '$(srcdir)/helpers/vzt_read.c'; fi`
+.cc.o:
+ at am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ at am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+
+.cc.obj:
+ at am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ at am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@ $(AM_V_CXX at am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
# This directory's subdirectories are mostly independent; you can cd
# into them and run 'make' without going through this Makefile.
# To change the values of 'make' variables: instead of editing Makefiles,
diff --git a/src/analyzer.h b/src/analyzer.h
index d7e9cfa..d839077 100644
--- a/src/analyzer.h
+++ b/src/analyzer.h
@@ -187,7 +187,7 @@ struct Node
unsigned int array_height, this_row;
#endif
- unsigned vardir : 2; /* see nodeVarDir, this is an internal value (currently unused) */
+ unsigned vardir : 2; /* see nodeVarDir, this is an internal value (currently used only by extload and FST) */
unsigned vartype : 5; /* see nodeVarType, this is an internal value */
unsigned extvals : 1; /* was formerly a pointer to ExtNode "ext", now simply a flag */
@@ -223,6 +223,14 @@ static const char *vartype_strings[] = { \
"realtime", \
"port", \
"string", \
+ "bit", \
+ "logic", \
+ "int", \
+ "s_int", \
+ "l_int", \
+ "byte", \
+ "enum", \
+ "s_real", \
"net", \
"alias", \
"missing" \
@@ -256,18 +264,40 @@ enum nodeVarType {
ND_VCD_PORT = 21,
ND_GEN_STRING = 22, /* generic string type */
- ND_GEN_NET = 23, /* used for AE2 */
- ND_GEN_ALIAS = 24,
- ND_GEN_MISSING = 25,
+ ND_SV_BIT = 23, /* SV types */
+ ND_SV_LOGIC = 24,
+ ND_SV_INT = 25,
+ ND_SV_SHORTINT = 26,
+ ND_SV_LONGINT = 27,
+ ND_SV_BYTE = 28,
+ ND_SV_ENUM = 29,
+ ND_SV_SHORTREAL = 30,
+
+
+ ND_GEN_NET = 31, /* used for AE2 */
+ ND_GEN_ALIAS = 32,
+ ND_GEN_MISSING = 33,
- ND_VARTYPE_MAX = 25
+ ND_VARTYPE_MAX = 33
};
+
+#define WAVE_NODEVARDIR_STR \
+static const char *vardir_strings[] = { \
+ "", \
+ "I", \
+ "O", \
+ "IO" \
+};
+
+
enum nodeVarDir {
ND_DIR_IMPLICIT = 0,
ND_DIR_IN = 1,
ND_DIR_OUT = 2,
- ND_DIR_INOUT = 3
+ ND_DIR_INOUT = 3,
+
+ ND_DIR_MAX = 3
};
typedef struct BitAttributes
diff --git a/src/bitvec.c b/src/bitvec.c
index aa2ccd0..4e2cb1d 100644
--- a/src/bitvec.c
+++ b/src/bitvec.c
@@ -213,14 +213,14 @@ if(GLOBALS->is_lxt)
import_lxt_trace(np);
}
else
-if(GLOBALS->is_lx2)
+if(GLOBALS->extload) /*needs to be ahead of is_lx2 as now can be is_lx2 with FsdbReader */
{
- import_lx2_trace(np);
+ import_extload_trace(np);
}
else
-if(GLOBALS->extload)
+if(GLOBALS->is_lx2)
{
- import_extload_trace(np);
+ import_lx2_trace(np);
}
else
{
diff --git a/src/cocoa/Makefile.in b/src/cocoa/Makefile.in
index 43b867b..c6632bd 100644
--- a/src/cocoa/Makefile.in
+++ b/src/cocoa/Makefile.in
@@ -149,6 +149,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -162,6 +165,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -233,6 +238,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/src/entry.c b/src/entry.c
index 423142e..8d2b780 100644
--- a/src/entry.c
+++ b/src/entry.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Tony Bybell 1999-2012.
+ * Copyright (c) Tony Bybell 1999-2013.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -21,6 +21,18 @@
#endif
#ifndef WAVE_MAC_USE_ENTRY
+static gint keypress_local(GtkWidget *widget, GdkEventKey *event, gpointer data)
+{
+if(GLOBALS->window_entry_c_1)
+ {
+ gdk_window_raise(GLOBALS->window_entry_c_1->window);
+ }
+
+return(FALSE);
+}
+#endif
+
+#ifndef WAVE_MAC_USE_ENTRY
static void enter_callback(GtkWidget *widget, GtkWidget *nothing)
{
G_CONST_RETURN gchar *entry_text;
@@ -155,6 +167,10 @@ return;
gtk_widget_show(GLOBALS->window_entry_c_1);
wave_gtk_grab_add(GLOBALS->window_entry_c_1);
+ gdk_window_raise(GLOBALS->window_entry_c_1->window);
+
+ gtk_signal_connect(GTK_OBJECT(GLOBALS->window_entry_c_1), "key_press_event",GTK_SIGNAL_FUNC(keypress_local), NULL);
+
#endif
}
diff --git a/src/extload.c b/src/extload.c
index c7078e2..f6b9a5b 100644
--- a/src/extload.c
+++ b/src/extload.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) Tony Bybell 2009-2012.
+ * Copyright (c) Tony Bybell 2009-2013.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
@@ -13,6 +13,8 @@
#include "vzt.h"
#include "lx2.h"
+#include "fsdb_wrapper_api.h"
+
#ifndef _MSC_VER
#include <unistd.h>
#endif
@@ -48,8 +50,21 @@ fprintf(stderr, "%s", extload_loader_fail_msg);
exit(255);
}
+void fsdb_import_masked(void)
+{
+fprintf(stderr, "%s", extload_loader_fail_msg);
+exit(255);
+}
+
+void fsdb_set_fac_process_mask(nptr np)
+{
+fprintf(stderr, "%s", extload_loader_fail_msg);
+exit(255);
+}
+
#else
+#ifndef WAVE_FSDB_READER_IS_PRESENT
static int last_modification_check(void)
{
#ifdef HAVE_SYS_STAT_H
@@ -96,29 +111,217 @@ if(GLOBALS->extload_lastmod)
return(1);
#endif
}
+#endif
-
-static char *get_varname(unsigned char *vtp, void *xc)
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+static char *get_varname(char *sbuff, unsigned char *vtp, unsigned char *vdp, int i)
+{
+#else
+static char *get_varname(unsigned char *vtp, unsigned char *vdp, int i)
{
static char sbuff[65537];
+#endif
char * rc;
int vt, vt_len;
+#ifndef WAVE_FSDB_READER_IS_PRESENT
for(;;)
+#endif
{
+#ifndef WAVE_FSDB_READER_IS_PRESENT
rc = fgets(sbuff, 65536, GLOBALS->extload);
- if(!rc)
+ if(rc)
+ {
+ if(isspace(rc[0]))
+ {
+ char *snp;
+ char sbuff2[65537];
+
+ sbuff2[0] = 0;
+
+ if((snp=strstr(rc+1, "Struct Name:")))
+ {
+ sscanf(rc+14,"%s", sbuff2);
+ if(sbuff2[0])
+ {
+ sprintf(rc, "Scope: vcd_struct %s NULL\n", sbuff2);
+ }
+ }
+ else
+ if((snp=strstr(rc+1, "Struct End")))
+ {
+ sprintf(rc, "Upscope:\n");
+ }
+ }
+ }
+ else
{
return(NULL);
}
+#else
+ rc = sbuff;
+#endif
- if(rc[0] == 'V')
- {
- if(!strncmp("Var: ", rc, 5))
+ if((rc[0] == 'V') && (i >= 0))
+ {
+#ifndef WAVE_FSDB_READER_IS_PRESENT
+ if(!strncmp("Var: ", rc, 5))
+#endif
{
char *pnt = rc + 5;
- char *vtyp_nam = pnt;
- char *cpyto = sbuff;
+ char *last_l = NULL;
+ char typ[64];
+ char *esc = NULL;
+ char *lb = NULL;
+ char *colon = NULL;
+ char *rb = NULL;
+ int state = 0;
+ char *vtyp_nam;
+ char *cpyto;
+ char *pntd;
+
+ sscanf(rc + 5, "%s", typ);
+
+ while(*pnt)
+ {
+ if((pnt[0] == 'l') && (pnt[1] == ':'))
+ {
+ last_l = pnt;
+ }
+ else if(pnt[0] == '\\')
+ {
+ esc = pnt;
+ }
+ else if(!last_l)
+ {
+ if(pnt[0] == '[')
+ {
+ lb = pnt;
+ colon = NULL;
+ rb = NULL;
+ state = 1;
+ }
+ else if(pnt[0] == ']')
+ {
+ rb = pnt;
+ state = 0;
+ if(!isspace(pnt[1]))
+ {
+ lb = colon = rb = NULL;
+ }
+ }
+ else if(pnt[0] == ':')
+ {
+ if(state)
+ {
+ colon = pnt;
+ }
+ }
+ }
+
+ pnt++;
+ }
+
+ if(last_l)
+ {
+ unsigned int l, r;
+ char s1[32];
+ unsigned int d2;
+ sscanf(last_l+2, "%u r:%u %s %u", &l, &r, s1, &d2);
+
+ GLOBALS->extload_idcodes[i] = d2;
+ if(GLOBALS->extload_inv_idcodes[d2] == 0) GLOBALS->extload_inv_idcodes[d2] = i+1; /* root alias */
+
+ if(!strcmp("vcd_real", typ))
+ {
+ GLOBALS->mvlfacs_vzt_c_3[i].flags = VZT_RD_SYM_F_DOUBLE;
+ GLOBALS->extload_node_block[i].msi=0;
+ GLOBALS->extload_node_block[i].lsi=0;
+ GLOBALS->mvlfacs_vzt_c_3[i].len=64;
+ }
+ else
+ if(!strcmp("vcd_integer", typ))
+ {
+ GLOBALS->mvlfacs_vzt_c_3[i].flags = VZT_RD_SYM_F_INTEGER;
+ GLOBALS->extload_node_block[i].msi=0;
+ GLOBALS->extload_node_block[i].lsi=0;
+ GLOBALS->mvlfacs_vzt_c_3[i].len=32;
+ }
+ else
+ {
+ int len_parse = 1;
+
+ GLOBALS->mvlfacs_vzt_c_3[i].len=(l>r) ? (l-r+1) : (r-l+1);
+
+ if(esc && lb && rb)
+ {
+ GLOBALS->extload_node_block[i].msi = atoi(lb+1);
+ if(colon)
+ {
+ GLOBALS->extload_node_block[i].lsi = atoi(colon+1);
+ }
+ else
+ {
+ GLOBALS->extload_node_block[i].lsi = GLOBALS->extload_node_block[i].msi;
+ }
+
+ len_parse = (GLOBALS->extload_node_block[i].msi > GLOBALS->extload_node_block[i].lsi)
+ ? (GLOBALS->extload_node_block[i].msi - GLOBALS->extload_node_block[i].lsi + 1)
+ : (GLOBALS->extload_node_block[i].lsi - GLOBALS->extload_node_block[i].msi + 1);
+
+ if(len_parse != GLOBALS->mvlfacs_vzt_c_3[i].len)
+ {
+ GLOBALS->extload_node_block[i].msi=l;
+ GLOBALS->extload_node_block[i].lsi=r;
+ }
+ }
+ else
+ {
+ if(lb && !l && !r) /* fix for stranded signals */
+ {
+ GLOBALS->extload_node_block[i].msi=atoi(lb+1);
+ GLOBALS->extload_node_block[i].lsi=atoi(lb+1);
+ }
+ else
+ {
+ GLOBALS->extload_node_block[i].msi=l;
+ GLOBALS->extload_node_block[i].lsi=r;
+ }
+ }
+
+ GLOBALS->mvlfacs_vzt_c_3[i].flags = VZT_RD_SYM_F_BITS;
+ }
+ }
+
+ /* now extract directional/type information */
+ pnt = rc + 5;
+ vtyp_nam = pnt;
+ cpyto = sbuff;
+ pntd = strrchr(last_l ? last_l : pnt, ':');
+
+ if(pntd)
+ {
+ unsigned char vd = ND_DIR_IMPLICIT;
+
+ pntd = strchr(pntd, ' ');
+ if(pntd)
+ {
+ pntd++;
+ if(*pntd == 'o')
+ {
+ vd = ND_DIR_OUT;
+ GLOBALS->nonimplicit_direction_encountered = 1;
+ }
+ else
+ if(!strncmp(pntd, "in", 2))
+ {
+ vd = (pntd[2] == 'p') ? ND_DIR_IN : ND_DIR_INOUT;
+ GLOBALS->nonimplicit_direction_encountered = 1;
+ }
+ }
+
+ if(vdp) { *vdp = vd; }
+ }
while(*pnt)
{
@@ -178,7 +381,33 @@ for(;;)
/* if((*pnt == '[')||(isspace(*pnt))) break; */
if(isspace(*pnt)) break;
- if((*pnt == '[') && (pnt == strrchr(pnt, '['))) break; /* fixes arrays */
+ if((*pnt == '[') && (pnt == strrchr(pnt, '['))) /* fix for arrays */
+ {
+ /* now to fix possible generate... */
+ char *pnt2 = pnt;
+ char lastch = *pnt2;
+ int colon_seen = 0;
+
+ pnt2++;
+ while(*pnt2 && !isspace(*pnt2) && (*pnt2 != '['))
+ {
+ lastch = *pnt2; pnt2++;
+ if(lastch == ':') { colon_seen = 1; }
+ };
+
+ if(lastch == ']') /* fix for NC verilog arrays */
+ {
+ int rng;
+
+ if(colon_seen) break;
+
+ rng = GLOBALS->extload_node_block[i].msi - GLOBALS->extload_node_block[i].lsi;
+ if(!rng)
+ {
+ break;
+ }
+ }
+ }
if(*pnt == '\\') /* this is not strictly correct, but fixes generic ranges from icarus */
{
@@ -195,7 +424,9 @@ for(;;)
else
if(rc[0] == 'S')
{
+#ifndef WAVE_FSDB_READER_IS_PRESENT
if(!strncmp(rc, "Scope:", 6))
+#endif
{
char vht[2048];
char cname[2048];
@@ -204,7 +435,7 @@ for(;;)
vht[0] = vht[4] = vht[5] = cname[0] = ctype[0] = 0;
sscanf(rc+6, "%s %s %s", vht, cname, ctype);
- GLOBALS->fst_scope_name = fstReaderPushScope(xc, cname, GLOBALS->mod_tree_parent);
+ GLOBALS->fst_scope_name = fstReaderPushScope(GLOBALS->extload_xc, cname, GLOBALS->mod_tree_parent);
if(!strcmp(ctype, "NULL")) { ctype[0] = 0; }
if(!strncmp(vht, "vcd_", 4))
@@ -215,6 +446,17 @@ for(;;)
case 't': ttype = TREE_VCD_ST_TASK; break;
case 'f': ttype = (vht[5] == 'u') ? TREE_VCD_ST_FUNCTION : TREE_VCD_ST_FORK; break;
case 'b': ttype = TREE_VCD_ST_BEGIN; break;
+ case 'g': ttype = TREE_VCD_ST_GENERATE; break;
+ case 's': ttype = TREE_VCD_ST_STRUCT; break;
+ default: ttype = TREE_UNKNOWN; break;
+ }
+ }
+ else
+ if(!strncmp(vht, "sv_", 3))
+ {
+ switch(vht[3])
+ {
+ case 'i': ttype = TREE_VCD_ST_INTERFACE; break;
default: ttype = TREE_UNKNOWN; break;
}
}
@@ -229,327 +471,102 @@ for(;;)
else
if(rc[0] == 'U')
{
- GLOBALS->mod_tree_parent = fstReaderGetCurrentScopeUserInfo(xc);
- GLOBALS->fst_scope_name = fstReaderPopScope(xc);
+ GLOBALS->mod_tree_parent = fstReaderGetCurrentScopeUserInfo(GLOBALS->extload_xc);
+ GLOBALS->fst_scope_name = fstReaderPopScope(GLOBALS->extload_xc);
}
}
+
+return(NULL);
}
-/*
- * mainline
- */
-TimeType extload_main(char *fname, char *skip_start, char *skip_end)
-{
-char sbuff[65537];
-int max_idcode;
-unsigned int msk = 0;
-unsigned char vt_prev, vt, nvt;
-void *xc = NULL;
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+static void process_extload_variable(char *s_gv)
+#else
+static void process_extload_variable(void)
+#endif
+{
int i;
+unsigned char vt, nvt;
+unsigned char vd;
struct Node *n;
-struct symbol *s, *prevsymroot=NULL, *prevsym=NULL;
-struct symbol *sym_block = NULL;
-struct Node *node_block = NULL;
-char **namecache = NULL;
-
-if(!(GLOBALS->extload=fopen(fname, "rb")))
- {
- GLOBALS->extload_already_errored = 1;
- return(LLDescriptor(0)); /* look at GLOBALS->vzt_vzt_c_1 in caller for success status... */
- }
-fclose(GLOBALS->extload);
+struct symbol *s;
+char buf[65537];
+char *str;
+struct fac *f;
+char *fnam;
+int flen;
-/* SPLASH */ splash_create();
+i = GLOBALS->extload_i;
-last_modification_check();
-sprintf(sbuff, "%s -info %s 2>&1", EXTLOAD_PATH, fname);
-GLOBALS->extload = popen(sbuff, "r");
-for(;;)
+if(i<0)
{
- char * rc = fgets(sbuff, 65536, GLOBALS->extload);
- if(!rc) break;
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+ fnam = get_varname(s_gv, &GLOBALS->extload_vt_prev, &GLOBALS->extload_vd_prev, 0);
+ flen = strlen(fnam);
- switch(rc[0])
+ if(GLOBALS->extload_hlen)
{
- case 's':
- if(!strncmp("scale unit :", rc, 20))
- {
- char *pnt = rc+20;
-
- GLOBALS->time_scale = atoi(rc+20);
- GLOBALS->time_dimension = 'n';
- while(*pnt)
- {
- if(isalpha(*pnt))
- {
- GLOBALS->time_dimension = tolower(*pnt);
- break;
- }
- pnt++;
- }
-
- msk |= 1;
- }
- break;
-
- case 'm':
- if(!strncmp("minimum xtag : (", rc, 22))
- {
- unsigned int lo = 0, hi = 0;
- sscanf(rc + 22, "%u %u", &hi, &lo);
- GLOBALS->min_time = (TimeType)((((UTimeType)hi)<<32) + ((UTimeType)lo));
-
- msk |= 2;
- }
- else
- if(!strncmp("maximum xtag : (", rc, 22))
- {
- unsigned int lo = 0, hi = 0;
- sscanf(rc + 22, "%u %u", &hi, &lo);
- GLOBALS->max_time = (TimeType)((((UTimeType)hi)<<32) + ((UTimeType)lo));
-
- msk |= 4;
- }
- else
- if(!strncmp("max var idcode :", rc, 20))
- {
- sscanf(rc + 21, "%d", &max_idcode);
-
- msk |= 8;
- }
-
- break;
-
- case 'v':
- if(!strncmp("var creation cnt :", rc, 20))
- {
- sscanf(rc + 21, "%d", &GLOBALS->numfacs);
-
- msk |= 16;
- }
-
- case 'f':
- if(!strncmp("file status : finished", rc, 29))
- {
- msk |= 32;
- }
- break;
-
- default:
- break;
+ GLOBALS->extload_namecache[0]=malloc_2(GLOBALS->extload_hlen+1+flen+1);
+ strcpy(GLOBALS->extload_namecache[0], GLOBALS->fst_scope_name);
+ *(GLOBALS->extload_namecache[0]+GLOBALS->extload_hlen) = '.';
+ strcpy(GLOBALS->extload_namecache[0]+GLOBALS->extload_hlen+1, fnam);
}
- }
-pclose(GLOBALS->extload);
-
-if(msk != (1+2+4+8+16+32))
- {
- fprintf(stderr, EXTLOAD"Could not initialize '%s' properly.\n", fname);
- if((msk & (1+2+4+8+16+32)) == (1+2+4+8+16))
+ else
{
- fprintf(stderr, EXTLOAD"File is not finished dumping.\n");
+ GLOBALS->extload_namecache[0]=malloc_2(flen+1);
+ strcpy(GLOBALS->extload_namecache[0], fnam);
}
- GLOBALS->extload_already_errored = 1;
- return(LLDescriptor(0));
- }
-
-GLOBALS->min_time *= GLOBALS->time_scale;
-GLOBALS->max_time *= GLOBALS->time_scale;
-
-GLOBALS->mvlfacs_vzt_c_3=(struct fac *)calloc_2(GLOBALS->numfacs,sizeof(struct fac));
-GLOBALS->vzt_table_vzt_c_1=(struct lx2_entry *)calloc_2(GLOBALS->numfacs, sizeof(struct lx2_entry));
-namecache=(char **)calloc_2(GLOBALS->numfacs, sizeof(char *));
-sym_block = (struct symbol *)calloc_2(GLOBALS->numfacs, sizeof(struct symbol));
-node_block=(struct Node *)calloc_2(GLOBALS->numfacs,sizeof(struct Node));
-GLOBALS->extload_idcodes=(unsigned int *)calloc_2(GLOBALS->numfacs, sizeof(unsigned int));
-GLOBALS->extload_inv_idcodes=(int *)calloc_2(max_idcode+1, sizeof(int));
+#else
+ fnam = get_varname(&GLOBALS->extload_vt_prev, &GLOBALS->extload_vd_prev, 0);
+ flen = strlen(fnam);
-if(!last_modification_check()) { GLOBALS->extload_already_errored = 1; return(LLDescriptor(0)); }
-sprintf(sbuff, "%s -hier_tree %s 2>&1", EXTLOAD_PATH, fname);
-GLOBALS->extload = popen(sbuff, "r");
-i = 0;
-for(;;)
+ GLOBALS->extload_namecache[0]=malloc_2(flen+1);
+ strcpy(GLOBALS->extload_namecache[0], fnam);
+#endif
+ }
+else
{
- char * rc = fgets(sbuff, 65536, GLOBALS->extload);
- if(!rc) break;
-
- if(rc[0] == 'V')
+ vt = GLOBALS->extload_vt_prev;
+ vd = GLOBALS->extload_vd_prev;
+ if(i!=(GLOBALS->numfacs-1))
{
- if(!strncmp("Var:", rc, 4))
- {
- char *pnt = rc + 5;
- char *last_l = NULL;
- char typ[64];
- char *esc = NULL;
- char *lb = NULL;
- char *colon = NULL;
- char *rb = NULL;
- int state = 0;
-
- sscanf(rc + 5, "%s", typ);
-
- while(*pnt)
- {
- if((pnt[0] == 'l') && (pnt[1] == ':'))
- {
- last_l = pnt;
- }
- else if(pnt[0] == '\\')
- {
- esc = pnt;
- }
- else if(pnt[0] == '[')
- {
- lb = pnt;
- colon = NULL;
- state = 1;
- }
- else if(pnt[0] == ']')
- {
- rb = pnt;
- state = 0;
- }
- else if(pnt[0] == ':')
- {
- if(state)
- {
- colon = pnt;
- }
- }
-
- pnt++;
- }
-
- if(last_l)
- {
- unsigned int l, r;
- char s1[32], s3[32], s4[32];
- unsigned int d2;
- sscanf(last_l, "l:%u r:%u %s %u %s %s", &l, &r, s1, &d2, s3, s4);
-
- GLOBALS->extload_idcodes[i] = d2;
- if(GLOBALS->extload_inv_idcodes[d2] == 0) GLOBALS->extload_inv_idcodes[d2] = i+1; /* root alias */
-
- if(!strcmp("vcd_real", typ))
- {
- GLOBALS->mvlfacs_vzt_c_3[i].flags = VZT_RD_SYM_F_DOUBLE;
- node_block[i].msi=0;
- node_block[i].lsi=0;
- GLOBALS->mvlfacs_vzt_c_3[i].len=64;
- }
- else
- if(!strcmp("vcd_integer", typ))
- {
- GLOBALS->mvlfacs_vzt_c_3[i].flags = VZT_RD_SYM_F_INTEGER;
- node_block[i].msi=0;
- node_block[i].lsi=0;
- GLOBALS->mvlfacs_vzt_c_3[i].len=32;
- }
- else
- {
- int len_parse = 1;
-
- GLOBALS->mvlfacs_vzt_c_3[i].len=(l>r) ? (l-r+1) : (r-l+1);
-
- if(esc && lb && rb)
- {
- node_block[i].msi = atoi(lb+1);
- if(colon)
- {
- node_block[i].lsi = atoi(colon+1);
- }
- else
- {
- node_block[i].lsi = node_block[i].msi;
- }
-
- len_parse = (node_block[i].msi > node_block[i].lsi)
- ? (node_block[i].msi - node_block[i].lsi + 1)
- : (node_block[i].lsi - node_block[i].msi + 1);
-
- if(len_parse != GLOBALS->mvlfacs_vzt_c_3[i].len)
- {
- node_block[i].msi=l;
- node_block[i].lsi=r;
- }
- }
- else
- {
- node_block[i].msi=l;
- node_block[i].lsi=r;
- }
-
- GLOBALS->mvlfacs_vzt_c_3[i].flags = VZT_RD_SYM_F_BITS;
- }
- }
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+ fnam = get_varname(s_gv, &GLOBALS->extload_vt_prev, &GLOBALS->extload_vd_prev, i+1);
+ flen = strlen(fnam);
- i++;
+ if(GLOBALS->extload_hlen)
+ {
+ GLOBALS->extload_namecache[i+1]=malloc_2(GLOBALS->extload_hlen+1+flen+1);
+ strcpy(GLOBALS->extload_namecache[i+1], GLOBALS->fst_scope_name);
+ *(GLOBALS->extload_namecache[i+1]+GLOBALS->extload_hlen) = '.';
+ strcpy(GLOBALS->extload_namecache[i+1]+GLOBALS->extload_hlen+1, fnam);
}
- }
-
- }
-
-pclose(GLOBALS->extload);
-
-if(i==GLOBALS->numfacs)
- {
- fprintf(stderr, EXTLOAD"Finished building %d facs.\n", GLOBALS->numfacs);
- }
- else
- {
- fprintf(stderr, EXTLOAD"Fac count mismatch: %d expected vs %d found, exiting.\n", GLOBALS->numfacs, i);
- GLOBALS->extload_already_errored = 1;
- return(LLDescriptor(0));
- }
-/* SPLASH */ splash_sync(1, 5);
-
-if(!last_modification_check()) { GLOBALS->extload_already_errored = 1; return(LLDescriptor(0)); }
-sprintf(sbuff, "%s -hier_tree %s 2>&1", EXTLOAD_PATH, fname);
-GLOBALS->extload = popen(sbuff, "r");
-
-/* do your stuff here..all useful info has been initialized by now */
-
-if(!GLOBALS->hier_was_explicitly_set) /* set default hierarchy split char */
- {
- GLOBALS->hier_delimeter='.';
- }
-
-xc = fstReaderOpenForUtilitiesOnly();
-
-if(GLOBALS->numfacs)
- {
- char *fnam = get_varname(&vt_prev, xc);
- int flen = strlen(fnam);
- namecache[0]=malloc_2(flen+1);
- strcpy(namecache[0], fnam);
- }
-
-for(i=0;i<GLOBALS->numfacs;i++)
- {
- char buf[65537];
- char *str;
- struct fac *f;
+ else
+ {
+ GLOBALS->extload_namecache[i+1]=malloc_2(flen+1);
+ strcpy(GLOBALS->extload_namecache[i+1], fnam);
+ }
+#else
+ fnam = get_varname(&GLOBALS->extload_vt_prev, &GLOBALS->extload_vd_prev, i+1);
+ flen = strlen(fnam);
- vt = vt_prev;
- if(i!=(GLOBALS->numfacs-1))
- {
- char *fnam = get_varname(&vt_prev, xc);
- int flen = strlen(fnam);
- namecache[i+1]=malloc_2(flen+1);
- strcpy(namecache[i+1], fnam);
+ GLOBALS->extload_namecache[i+1]=malloc_2(flen+1);
+ strcpy(GLOBALS->extload_namecache[i+1], fnam);
+#endif
}
if(i>1)
{
- free_2(namecache[i-2]);
- namecache[i-2] = NULL;
+ free_2(GLOBALS->extload_namecache[i-2]);
+ GLOBALS->extload_namecache[i-2] = NULL;
}
f=GLOBALS->mvlfacs_vzt_c_3+i;
if((f->len>1)&& (!(f->flags&(VZT_RD_SYM_F_INTEGER|VZT_RD_SYM_F_DOUBLE|VZT_RD_SYM_F_STRING))) )
{
- int len=sprintf(buf, "%s[%d:%d]", namecache[i],node_block[i].msi, node_block[i].lsi);
+ int len=sprintf(buf, "%s[%d:%d]", GLOBALS->extload_namecache[i],GLOBALS->extload_node_block[i].msi, GLOBALS->extload_node_block[i].lsi);
str=malloc_2(len+1);
if(!GLOBALS->alt_hier_delimeter)
@@ -560,19 +577,19 @@ for(i=0;i<GLOBALS->numfacs;i++)
{
strcpy_vcdalt(str, buf, GLOBALS->alt_hier_delimeter);
}
- s=&sym_block[i];
+ s=&GLOBALS->extload_sym_block[i];
symadd_name_exists_sym_exists(s,str,0);
- prevsymroot = prevsym = NULL;
+ GLOBALS->extload_prevsymroot = GLOBALS->extload_prevsym = NULL;
}
else if (
((f->len==1)&&(!(f->flags&(VZT_RD_SYM_F_INTEGER|VZT_RD_SYM_F_DOUBLE|VZT_RD_SYM_F_STRING)))&&
- ((i!=GLOBALS->numfacs-1)&&(!strcmp(namecache[i], namecache[i+1]))))
+ ((i!=GLOBALS->numfacs-1)&&(!strcmp(GLOBALS->extload_namecache[i], GLOBALS->extload_namecache[i+1]))))
||
- (((i!=0)&&(!strcmp(namecache[i], namecache[i-1]))) &&
- (node_block[i].msi!=-1)&&(node_block[i].lsi!=-1))
+ (((i!=0)&&(!strcmp(GLOBALS->extload_namecache[i], GLOBALS->extload_namecache[i-1]))) &&
+ (GLOBALS->extload_node_block[i].msi!=-1)&&(GLOBALS->extload_node_block[i].lsi!=-1))
)
{
- int len = sprintf(buf, "%s[%d]", namecache[i],node_block[i].msi);
+ int len = sprintf(buf, "%s[%d]", GLOBALS->extload_namecache[i],GLOBALS->extload_node_block[i].msi);
str=malloc_2(len+1);
if(!GLOBALS->alt_hier_delimeter)
{
@@ -582,44 +599,44 @@ for(i=0;i<GLOBALS->numfacs;i++)
{
strcpy_vcdalt(str, buf, GLOBALS->alt_hier_delimeter);
}
- s=&sym_block[i];
+ s=&GLOBALS->extload_sym_block[i];
symadd_name_exists_sym_exists(s,str,0);
- if((prevsym)&&(i>0)&&(!strcmp(namecache[i], namecache[i-1]))) /* allow chaining for search functions.. */
+ if((GLOBALS->extload_prevsym)&&(i>0)&&(!strcmp(GLOBALS->extload_namecache[i], GLOBALS->extload_namecache[i-1]))) /* allow chaining for search functions.. */
{
- prevsym->vec_root = prevsymroot;
- prevsym->vec_chain = s;
- s->vec_root = prevsymroot;
- prevsym = s;
+ GLOBALS->extload_prevsym->vec_root = GLOBALS->extload_prevsymroot;
+ GLOBALS->extload_prevsym->vec_chain = s;
+ s->vec_root = GLOBALS->extload_prevsymroot;
+ GLOBALS->extload_prevsym = s;
}
else
{
- prevsymroot = prevsym = s;
+ GLOBALS->extload_prevsymroot = GLOBALS->extload_prevsym = s;
}
}
else
{
- str=malloc_2(strlen(namecache[i])+1);
+ str=malloc_2(strlen(GLOBALS->extload_namecache[i])+1);
if(!GLOBALS->alt_hier_delimeter)
{
- strcpy(str, namecache[i]);
+ strcpy(str, GLOBALS->extload_namecache[i]);
}
else
{
- strcpy_vcdalt(str, namecache[i], GLOBALS->alt_hier_delimeter);
+ strcpy_vcdalt(str, GLOBALS->extload_namecache[i], GLOBALS->alt_hier_delimeter);
}
- s=&sym_block[i];
+ s=&GLOBALS->extload_sym_block[i];
symadd_name_exists_sym_exists(s,str,0);
- prevsymroot = prevsym = NULL;
+ GLOBALS->extload_prevsymroot = GLOBALS->extload_prevsym = NULL;
if(f->flags&VZT_RD_SYM_F_INTEGER)
{
- node_block[i].msi=31;
- node_block[i].lsi=0;
+ GLOBALS->extload_node_block[i].msi=31;
+ GLOBALS->extload_node_block[i].lsi=0;
GLOBALS->mvlfacs_vzt_c_3[i].len=32;
}
}
- n=&node_block[i];
+ n=&GLOBALS->extload_node_block[i];
n->nname=s->name;
n->mv.mvlfac = GLOBALS->mvlfacs_vzt_c_3+i;
GLOBALS->mvlfacs_vzt_c_3[i].working_node = n;
@@ -657,25 +674,338 @@ for(i=0;i<GLOBALS->numfacs;i++)
default: nvt = ND_UNSPECIFIED_DEFAULT; break;
}
n->vartype = nvt;
+ n->vardir = vd;
+ }
+
+GLOBALS->extload_i++;
+}
+
+
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+static void extload_hiertree_callback(void *pnt)
+{
+char *s = (char *)pnt;
+
+switch(s[0])
+ {
+ case 'S':
+ case 'U': get_varname(s, NULL, NULL, -1);
+ GLOBALS->extload_hlen = GLOBALS->fst_scope_name ? strlen(GLOBALS->fst_scope_name) : 0;
+ break;
+
+ case 'V': process_extload_variable(s);
+ default: break;
+ }
+}
+#endif
+
+
+/*
+ * mainline
+ */
+static TimeType extload_main_2(char *fname, char *skip_start, char *skip_end)
+{
+int max_idcode;
+#ifndef WAVE_FSDB_READER_IS_PRESENT
+char sbuff[65537];
+unsigned int msk = 0;
+#endif
+
+int i;
+
+if(!(GLOBALS->extload=fopen(fname, "rb")))
+ {
+ GLOBALS->extload_already_errored = 1;
+ return(LLDescriptor(0)); /* look at GLOBALS->vzt_vzt_c_1 in caller for success status... */
+ }
+fclose(GLOBALS->extload);
+
+
+/* SPLASH */ splash_create();
+
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+GLOBALS->extload_ffr_ctx = fsdbReaderOpenFile(GLOBALS->loaded_file_name);
+GLOBALS->is_lx2 = LXT2_IS_FSDB;
+
+if(GLOBALS->extload_ffr_ctx)
+ {
+ int rv;
+ int mult;
+ char scale;
+ uint64_t tim;
+ struct fsdbReaderGetStatistics_t *gs;
+ int success_count = 0;
+ int attempt_count = 0;
+
+ attempt_count++;
+ rv = fsdbReaderExtractScaleUnit(GLOBALS->extload_ffr_ctx, &mult, &scale);
+ if(rv)
+ {
+ GLOBALS->time_scale = mult;
+ GLOBALS->time_dimension = tolower(scale);
+ success_count++;
+ }
+
+ attempt_count++;
+ rv = fsdbReaderGetMinFsdbTag64(GLOBALS->extload_ffr_ctx, &tim);
+ if(rv)
+ {
+ GLOBALS->min_time = tim;
+ success_count++;
+ }
+
+ attempt_count++;
+ rv = fsdbReaderGetMaxFsdbTag64(GLOBALS->extload_ffr_ctx, &tim);
+ if(rv)
+ {
+ GLOBALS->max_time = tim;
+ if(GLOBALS->max_time == LLDescriptor(0))
+ {
+ GLOBALS->max_time = LLDescriptor(1);
+ }
+ success_count++;
+ }
+
+ attempt_count++;
+ max_idcode = fsdbReaderGetMaxVarIdcode(GLOBALS->extload_ffr_ctx);
+ if(max_idcode)
+ {
+ success_count++;
+ }
+
+ attempt_count++;
+ gs = fsdbReaderGetStatistics(GLOBALS->extload_ffr_ctx);
+ if(gs)
+ {
+ GLOBALS->numfacs = gs->varCount;
+ free(gs);
+ success_count++;
+ }
+
+ if(attempt_count != success_count)
+ {
+ fprintf(stderr, EXTLOAD"Could not initialize '%s' properly.\n", fname);
+ GLOBALS->extload_already_errored = 1;
+ return(LLDescriptor(0));
+ }
+ }
+ else
+ {
+ fprintf(stderr, EXTLOAD"Could not initialize '%s' properly.\n", fname);
+ GLOBALS->extload_already_errored = 1;
+ return(LLDescriptor(0));
+ }
+
+#else
+
+last_modification_check();
+sprintf(sbuff, "%s -info %s 2>&1", EXTLOAD_PATH, fname);
+GLOBALS->extload = popen(sbuff, "r");
+for(;;)
+ {
+ char * rc = fgets(sbuff, 65536, GLOBALS->extload);
+ if(!rc) break;
+
+ switch(rc[0])
+ {
+ case 's':
+ if(!strncmp("scale unit", rc, 10))
+ {
+ char *pnt = strchr(rc+10, ':');
+
+ if(pnt)
+ {
+ pnt++;
+ GLOBALS->time_scale = atoi(pnt);
+ GLOBALS->time_dimension = 'n';
+ while(*pnt)
+ {
+ if(isalpha(*pnt))
+ {
+ GLOBALS->time_dimension = tolower(*pnt);
+ break;
+ }
+ pnt++;
+ }
+
+ msk |= 1;
+ }
+ }
+ break;
+
+ case 'm':
+ if(!strncmp("minimum xtag", rc, 12))
+ {
+ char *pnt = strchr(rc+12, '(');
+ if(pnt)
+ {
+ unsigned int lo = 0, hi = 0;
+ pnt++;
+ sscanf(pnt, "%u %u", &hi, &lo);
+ GLOBALS->min_time = (TimeType)((((UTimeType)hi)<<32) + ((UTimeType)lo));
+
+ msk |= 2;
+ }
+ }
+ else
+ if(!strncmp("maximum xtag", rc, 12))
+ {
+ char *pnt = strchr(rc+12, '(');
+ if(pnt)
+ {
+ unsigned int lo = 0, hi = 0;
+ pnt++;
+ sscanf(pnt, "%u %u", &hi, &lo);
+ GLOBALS->max_time = (TimeType)((((UTimeType)hi)<<32) + ((UTimeType)lo));
+ if(GLOBALS->max_time == LLDescriptor(0))
+ {
+ GLOBALS->max_time = LLDescriptor(1);
+ }
+
+ msk |= 4;
+ }
+ }
+ else
+ if(!strncmp("max var idcode", rc, 14))
+ {
+ char *pnt = strchr(rc+14, ':');
+ if(pnt)
+ {
+ pnt++;
+ sscanf(pnt, "%d", &max_idcode);
+
+ msk |= 8;
+ }
+ }
+
+ break;
+
+ case 'v':
+ if(!strncmp("var creation cnt", rc, 16))
+ {
+ char *pnt = strchr(rc+16, ':');
+ if(pnt)
+ {
+ pnt++;
+ sscanf(pnt, "%d", &GLOBALS->numfacs);
+
+ msk |= 16;
+ }
+ }
+
+ case 'f':
+ if(!strncmp("file status", rc, 11))
+ {
+ char *pnt = strchr(rc+11, ':');
+ if(pnt)
+ {
+ pnt++;
+ if(strstr(pnt, "finished"))
+ {
+ msk |= 32;
+ }
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+pclose(GLOBALS->extload);
+
+if(msk != (1+2+4+8+16+32))
+ {
+ fprintf(stderr, EXTLOAD"Could not initialize '%s' properly.\n", fname);
+ if((msk & (1+2+4+8+16+32)) == (1+2+4+8+16))
+ {
+ fprintf(stderr, EXTLOAD"File is not finished dumping.\n");
+ }
+ GLOBALS->extload_already_errored = 1;
+ return(LLDescriptor(0));
+ }
+
+#endif
+
+GLOBALS->min_time *= GLOBALS->time_scale;
+GLOBALS->max_time *= GLOBALS->time_scale;
+
+GLOBALS->mvlfacs_vzt_c_3=(struct fac *)calloc_2(GLOBALS->numfacs,sizeof(struct fac));
+GLOBALS->vzt_table_vzt_c_1=(struct lx2_entry *)calloc_2(GLOBALS->numfacs, sizeof(struct lx2_entry));
+GLOBALS->extload_namecache=(char **)calloc_2(GLOBALS->numfacs, sizeof(char *));
+GLOBALS->extload_sym_block = (struct symbol *)calloc_2(GLOBALS->numfacs, sizeof(struct symbol));
+GLOBALS->extload_node_block=(struct Node *)calloc_2(GLOBALS->numfacs,sizeof(struct Node));
+GLOBALS->extload_idcodes=(unsigned int *)calloc_2(GLOBALS->numfacs, sizeof(unsigned int));
+GLOBALS->extload_inv_idcodes=(int *)calloc_2(max_idcode+1, sizeof(int));
+
+/* SPLASH */ splash_sync(1, 5);
+
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+
+if(!GLOBALS->hier_was_explicitly_set) /* set default hierarchy split char */
+ {
+ GLOBALS->hier_delimeter='.';
+ }
+
+GLOBALS->extload_xc = fstReaderOpenForUtilitiesOnly();
+
+GLOBALS->extload_i=-1;
+fsdbReaderReadScopeVarTree(GLOBALS->extload_ffr_ctx, extload_hiertree_callback);
+process_extload_variable(NULL); /* flush out final cached variable */
+
+decorated_module_cleanup(); /* ...also now in gtk2_treesearch.c */
+iter_through_comp_name_table();
+
+for(i=0;((i<2)&&(i<GLOBALS->numfacs));i++)
+ {
+ if(GLOBALS->extload_namecache[i])
+ {
+ free_2(GLOBALS->extload_namecache[i]);
+ GLOBALS->extload_namecache[i] = NULL;
+ }
+ }
+free_2(GLOBALS->extload_namecache); GLOBALS->extload_namecache = NULL;
+
+fstReaderClose(GLOBALS->extload_xc); /* corresponds to fstReaderOpenForUtilitiesOnly() */
+
+#else
+
+if(!last_modification_check()) { GLOBALS->extload_already_errored = 1; return(LLDescriptor(0)); }
+sprintf(sbuff, "%s -hier_tree %s 2>&1", EXTLOAD_PATH, fname);
+GLOBALS->extload = popen(sbuff, "r");
+
+/* do your stuff here..all useful info has been initialized by now */
+
+if(!GLOBALS->hier_was_explicitly_set) /* set default hierarchy split char */
+ {
+ GLOBALS->hier_delimeter='.';
}
-while(get_varname(&vt_prev, xc)); /* read through end to process all upscopes */
+GLOBALS->extload_xc = fstReaderOpenForUtilitiesOnly();
+
+for(GLOBALS->extload_i=-1;(GLOBALS->numfacs) && (GLOBALS->extload_i<GLOBALS->numfacs);)
+ {
+ process_extload_variable();
+ }
+while(get_varname(&GLOBALS->extload_vt_prev, NULL, -1)); /* read through end to process all upscopes */
decorated_module_cleanup(); /* ...also now in gtk2_treesearch.c */
iter_through_comp_name_table();
for(i=0;((i<2)&&(i<GLOBALS->numfacs));i++)
{
- if(namecache[i])
+ if(GLOBALS->extload_namecache[i])
{
- free_2(namecache[i]);
- namecache[i] = NULL;
+ free_2(GLOBALS->extload_namecache[i]);
+ GLOBALS->extload_namecache[i] = NULL;
}
}
-free_2(namecache); namecache = NULL;
+free_2(GLOBALS->extload_namecache); GLOBALS->extload_namecache = NULL;
pclose(GLOBALS->extload);
-fstReaderClose(xc); /* corresponds to fstReaderOpenForUtilitiesOnly() */
+fstReaderClose(GLOBALS->extload_xc); /* corresponds to fstReaderOpenForUtilitiesOnly() */
+
+#endif
/* SPLASH */ splash_sync(2, 5);
GLOBALS->facs=(struct symbol **)malloc_2(GLOBALS->numfacs*sizeof(struct symbol *));
@@ -685,7 +1015,7 @@ if(GLOBALS->fast_tree_sort)
for(i=0;i<GLOBALS->numfacs;i++)
{
int len;
- GLOBALS->facs[i]=&sym_block[i];
+ GLOBALS->facs[i]=&GLOBALS->extload_sym_block[i];
if((len=strlen(GLOBALS->facs[i]->name))>GLOBALS->longestname) GLOBALS->longestname=len;
}
@@ -717,7 +1047,7 @@ if(GLOBALS->fast_tree_sort)
#endif
int len;
- GLOBALS->facs[i]=&sym_block[i];
+ GLOBALS->facs[i]=&GLOBALS->extload_sym_block[i];
subst=GLOBALS->facs[i]->name;
if((len=strlen(subst))>GLOBALS->longestname) GLOBALS->longestname=len;
#ifdef WAVE_HIERFIX
@@ -792,6 +1122,25 @@ return(GLOBALS->max_time);
}
+TimeType extload_main(char *fname, char *skip_start, char *skip_end)
+{
+TimeType tt = extload_main_2(fname, skip_start, skip_end);
+
+if(!tt)
+ {
+ if(GLOBALS->extload_ffr_ctx)
+ {
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+ fsdbReaderClose(GLOBALS->extload_ffr_ctx);
+#endif
+ GLOBALS->extload_ffr_ctx = NULL;
+ }
+ }
+
+return(tt);
+}
+
+
/*
* extload callback (only does bits for now)
*/
@@ -913,11 +1262,52 @@ if(GLOBALS->extload_inv_idcodes[txidx_in_trace] < 0)
GLOBALS->extload_inv_idcodes[txidx_in_trace] = - (txidx + 1);
+#ifndef WAVE_FSDB_READER_IS_PRESENT
fprintf(stderr, EXTLOAD"Import: %s\n", np->nname);
+#endif
/* new stuff */
len = np->mv.mvlfac->len;
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+{
+void *hdl;
+
+/* fsdbReaderAddToSignalList(GLOBALS->extload_ffr_ctx, txidx_in_trace); */
+/* fsdbReaderLoadSignals(GLOBALS->extload_ffr_ctx); */
+
+hdl = fsdbReaderCreateVCTraverseHandle(GLOBALS->extload_ffr_ctx, txidx_in_trace);
+if(fsdbReaderHasIncoreVC(GLOBALS->extload_ffr_ctx, hdl))
+ {
+ TimeType mxt = (TimeType)fsdbReaderGetMinXTag(GLOBALS->extload_ffr_ctx, hdl);
+ fsdbReaderGotoXTag(GLOBALS->extload_ffr_ctx, hdl, mxt);
+
+ for(;;)
+ {
+ void *val_ptr;
+ char *b;
+ if(!fsdbReaderGetVC(GLOBALS->extload_ffr_ctx, hdl, &val_ptr))
+ {
+ break;
+ }
+
+ b = fsdbReaderTranslateVC(hdl, val_ptr);
+ extload_callback(&mxt, &txidx, &b);
+
+ if(!fsdbReaderGotoNextVC(GLOBALS->extload_ffr_ctx, hdl))
+ {
+ break;
+ }
+
+ mxt = (TimeType)fsdbReaderGetXTag(GLOBALS->extload_ffr_ctx, hdl);
+ }
+ }
+fsdbReaderFree(GLOBALS->extload_ffr_ctx, hdl);
+/* fsdbReaderUnloadSignals(GLOBALS->extload_ffr_ctx); */
+}
+
+#else
+
if(last_modification_check()) /* place array height check here in an "&&" branch, sorry, arrays not supported */
{
char sbuff[65537];
@@ -985,6 +1375,7 @@ if(last_modification_check()) /* place array height check here in an "&&" branch
pclose(GLOBALS->extload);
}
+#endif
histent_tail = htemp = histent_calloc();
if(len>1)
@@ -1066,5 +1457,37 @@ if(nold!=np)
}
}
+
+void fsdb_import_masked(void)
+{
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+fsdbReaderLoadSignals(GLOBALS->extload_ffr_ctx);
+GLOBALS->extload_ffr_import_count = 0;
+#endif
+}
+
+void fsdb_set_fac_process_mask(nptr np)
+{
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+struct fac *f;
+int txidx, txidx_in_trace;
+
+if(!(f=np->mv.mvlfac)) return; /* already imported */
+
+txidx = f - GLOBALS->mvlfacs_vzt_c_3;
+txidx_in_trace = GLOBALS->extload_idcodes[txidx];
+
+if(GLOBALS->extload_inv_idcodes[txidx_in_trace] > 0)
+ {
+ if(!GLOBALS->extload_ffr_import_count)
+ {
+ fsdbReaderUnloadSignals(GLOBALS->extload_ffr_ctx);
+ }
+ GLOBALS->extload_ffr_import_count++;
+
+ fsdbReaderAddToSignalList(GLOBALS->extload_ffr_ctx, txidx_in_trace);
+ }
#endif
+}
+#endif
diff --git a/src/extload.h b/src/extload.h
index 338a38c..ede3ebb 100644
--- a/src/extload.h
+++ b/src/extload.h
@@ -23,5 +23,9 @@
TimeType extload_main(char *fname, char *skip_start, char *skip_end);
void import_extload_trace(nptr np);
+/* FsdbReader adds */
+void fsdb_import_masked(void);
+void fsdb_set_fac_process_mask(nptr np);
+
#endif
diff --git a/src/fsdb_wrapper_api.cc b/src/fsdb_wrapper_api.cc
new file mode 100644
index 0000000..58fa732
--- /dev/null
+++ b/src/fsdb_wrapper_api.cc
@@ -0,0 +1,725 @@
+/*
+ * Copyright (c) Tony Bybell 2013.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ */
+
+#include <config.h>
+#include "fsdb_wrapper_api.h"
+
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+
+#ifdef NOVAS_FSDB
+#undef NOVAS_FSDB
+#endif
+
+#include "ffrAPI.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <inttypes.h>
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+static bool_T __TreeCB(fsdbTreeCBType cb_type, void *client_data, void *tree_cb_data)
+{
+return(TRUE); /* currently unused along with var/scope traversal */
+}
+
+static bool_T __MyTreeCB(fsdbTreeCBType cb_type, void *client_data, void *tree_cb_data);
+
+
+extern "C" void *fsdbReaderOpenFile(char *nam)
+{
+if(!ffrObject::ffrIsFSDB(nam))
+ {
+ return(NULL);
+ }
+
+ffrFSDBInfo fsdb_info;
+ffrObject::ffrGetFSDBInfo(nam, fsdb_info);
+if(fsdb_info.file_type != FSDB_FT_VERILOG)
+ {
+ return(NULL);
+ }
+
+ffrObject *fsdb_obj = ffrObject::ffrOpen3(nam);
+if(!fsdb_obj)
+ {
+ return(NULL);
+ }
+
+fsdb_obj->ffrSetTreeCBFunc(__TreeCB, NULL);
+
+if(fsdb_obj->ffrGetFileType() != FSDB_FT_VERILOG)
+ {
+ fsdb_obj->ffrClose();
+ return(NULL);
+ }
+
+return((void *)fsdb_obj);
+}
+
+
+extern "C" void fsdbReaderReadScopeVarTree(void *ctx,void (*cb)(void *))
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+
+fsdb_obj->ffrSetTreeCBFunc(__MyTreeCB, (void *) cb);
+fsdb_obj->ffrReadScopeVarTree();
+}
+
+
+extern "C" int fsdbReaderGetMaxVarIdcode(void *ctx)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+fsdbVarIdcode max_var_idcode = fsdb_obj->ffrGetMaxVarIdcode();
+return(max_var_idcode);
+}
+
+
+extern "C" void fsdbReaderAddToSignalList(void *ctx, int i)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+fsdb_obj->ffrAddToSignalList(i);
+}
+
+
+extern "C" void fsdbReaderLoadSignals(void *ctx)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+fsdb_obj->ffrLoadSignals();
+}
+
+
+extern "C" void *fsdbReaderCreateVCTraverseHandle(void *ctx, int i)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+ffrVCTrvsHdl hdl = fsdb_obj->ffrCreateVCTraverseHandle(i);
+return((void *)hdl);
+}
+
+
+extern "C" int fsdbReaderHasIncoreVC(void *ctx, void *hdl)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+ffrVCTrvsHdl fsdb_hdl = (ffrVCTrvsHdl)hdl;
+return(fsdb_hdl->ffrHasIncoreVC() == TRUE);
+}
+
+
+extern "C" void fsdbReaderFree(void *ctx, void *hdl)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+ffrVCTrvsHdl fsdb_hdl = (ffrVCTrvsHdl)hdl;
+
+fsdb_hdl->ffrFree();
+}
+
+
+extern "C" uint64_t fsdbReaderGetMinXTag(void *ctx, void *hdl)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+ffrVCTrvsHdl fsdb_hdl = (ffrVCTrvsHdl)hdl;
+fsdbTag64 timetag;
+
+fsdb_hdl->ffrGetMinXTag((void*)&timetag);
+uint64_t rv = (((uint64_t)timetag.H) << 32) | ((uint64_t)timetag.L);
+return(rv);
+}
+
+
+extern "C" uint64_t fsdbReaderGetMaxXTag(void *ctx, void *hdl)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+ffrVCTrvsHdl fsdb_hdl = (ffrVCTrvsHdl)hdl;
+fsdbTag64 timetag;
+
+fsdb_hdl->ffrGetMaxXTag((void*)&timetag);
+uint64_t rv = (((uint64_t)timetag.H) << 32) | ((uint64_t)timetag.L);
+return(rv);
+}
+
+
+extern "C" void fsdbReaderGotoXTag(void *ctx, void *hdl, uint64_t tim)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+ffrVCTrvsHdl fsdb_hdl = (ffrVCTrvsHdl)hdl;
+fsdbTag64 timetag;
+
+timetag.H = (uint32_t)(tim >> 32);
+timetag.L = (uint32_t)(tim & 0xFFFFFFFFUL);
+
+fsdb_hdl->ffrGotoXTag((void*)&timetag);
+}
+
+
+extern "C" uint64_t fsdbReaderGetXTag(void *ctx, void *hdl)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+ffrVCTrvsHdl fsdb_hdl = (ffrVCTrvsHdl)hdl;
+fsdbTag64 timetag;
+
+fsdb_hdl->ffrGetXTag((void*)&timetag);
+uint64_t rv = (((uint64_t)timetag.H) << 32) | ((uint64_t)timetag.L);
+return(rv);
+}
+
+
+extern "C" int fsdbReaderGetVC(void *ctx, void *hdl, void **val_ptr)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+ffrVCTrvsHdl fsdb_hdl = (ffrVCTrvsHdl)hdl;
+
+return(fsdb_hdl->ffrGetVC((byte_T**)val_ptr) == FSDB_RC_SUCCESS);
+}
+
+
+extern "C" int fsdbReaderGotoNextVC(void *ctx, void *hdl)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+ffrVCTrvsHdl fsdb_hdl = (ffrVCTrvsHdl)hdl;
+
+return(fsdb_hdl->ffrGotoNextVC() == FSDB_RC_SUCCESS);
+}
+
+
+extern "C" void fsdbReaderUnloadSignals(void *ctx)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+fsdb_obj->ffrUnloadSignals();
+}
+
+
+extern "C" void fsdbReaderClose(void *ctx)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+fsdb_obj->ffrClose();
+}
+
+
+extern "C" int fsdbReaderGetBytesPerBit(void *hdl)
+{
+ffrVCTrvsHdl fsdb_hdl = (ffrVCTrvsHdl)hdl;
+
+return(fsdb_hdl->ffrGetBytesPerBit());
+}
+
+
+extern "C" int fsdbReaderGetBitSize(void *hdl)
+{
+ffrVCTrvsHdl fsdb_hdl = (ffrVCTrvsHdl)hdl;
+
+return(fsdb_hdl->ffrGetBitSize());
+}
+
+
+extern "C" int fsdbReaderGetVarType(void *hdl)
+{
+ffrVCTrvsHdl fsdb_hdl = (ffrVCTrvsHdl)hdl;
+
+return(fsdb_hdl->ffrGetVarType());
+}
+
+
+extern "C" char *fsdbReaderTranslateVC(void *hdl, void *val_ptr)
+{
+ffrVCTrvsHdl vc_trvs_hdl = (ffrVCTrvsHdl)hdl;
+byte_T *vc_ptr = (byte_T *)val_ptr;
+
+static byte_T buffer[FSDB_MAX_BIT_SIZE+1];
+uint_T i;
+fsdbVarType var_type;
+
+switch (vc_trvs_hdl->ffrGetBytesPerBit())
+ {
+ case FSDB_BYTES_PER_BIT_1B:
+ for (i = 0; i < vc_trvs_hdl->ffrGetBitSize(); i++)
+ {
+ switch(vc_ptr[i])
+ {
+ case FSDB_BT_VCD_0:
+ buffer[i] = '0';
+ break;
+
+ case FSDB_BT_VCD_1:
+ buffer[i] = '1';
+ break;
+
+ case FSDB_BT_VCD_X:
+ buffer[i] = 'x';
+ break;
+
+ case FSDB_BT_VCD_Z:
+ buffer[i] = 'z';
+ break;
+
+ default:
+ buffer[i] = 'u';
+ break;
+ }
+ }
+ buffer[i] = 0;
+ break;
+
+ case FSDB_BYTES_PER_BIT_4B:
+ var_type = vc_trvs_hdl->ffrGetVarType();
+ switch(var_type)
+ {
+ case FSDB_VT_VCD_MEMORY_DEPTH:
+ case FSDB_VT_VHDL_MEMORY_DEPTH:
+ buffer[0] = 0;
+ break;
+
+ default:
+ vc_trvs_hdl->ffrGetVC(&vc_ptr);
+ sprintf((char *)buffer, "%f", *((float*)vc_ptr));
+ break;
+ }
+ break;
+
+ case FSDB_BYTES_PER_BIT_8B:
+ sprintf((char *)buffer, "%lg", *((double*)vc_ptr));
+ break;
+
+ default:
+ buffer[0] = 0;
+ break;
+ }
+
+return((char *)buffer);
+}
+
+
+extern "C" int fsdbReaderExtractScaleUnit(void *ctx, int *mult, char *scale)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+uint_T digit;
+char *unit;
+
+str_T su = fsdb_obj->ffrGetScaleUnit();
+fsdbRC rc = fsdb_obj->ffrExtractScaleUnit(su, digit, unit);
+
+if(rc == FSDB_RC_SUCCESS)
+ {
+ *mult = ((int)digit);
+ *scale = unit[0];
+ }
+
+return(rc == FSDB_RC_SUCCESS);
+}
+
+
+extern "C" int fsdbReaderGetMinFsdbTag64(void *ctx, uint64_t *tim)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+fsdbTag64 tag64;
+fsdbRC rc = fsdb_obj->ffrGetMinFsdbTag64(&tag64);
+
+if(rc == FSDB_RC_SUCCESS)
+ {
+ *tim = (((uint64_t)tag64.H) << 32) | ((uint64_t)tag64.L);
+ }
+
+return(rc == FSDB_RC_SUCCESS);
+}
+
+
+extern "C" int fsdbReaderGetMaxFsdbTag64(void *ctx, uint64_t *tim)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+fsdbTag64 tag64;
+fsdbRC rc = fsdb_obj->ffrGetMaxFsdbTag64(&tag64);
+
+if(rc == FSDB_RC_SUCCESS)
+ {
+ *tim = (((uint64_t)tag64.H) << 32) | ((uint64_t)tag64.L);
+ }
+
+return(rc == FSDB_RC_SUCCESS);
+}
+
+
+static bool_T __fsdbReaderGetStatisticsCB(fsdbTreeCBType cb_type, void *client_data, void *tree_cb_data)
+{
+struct fsdbReaderGetStatistics_t *gs = (struct fsdbReaderGetStatistics_t *)client_data;
+
+switch (cb_type)
+ {
+ case FSDB_TREE_CBT_VAR: gs->varCount++;
+ break;
+ case FSDB_TREE_CBT_SCOPE: gs->scopeCount++;
+ break;
+
+ default: break;
+ }
+
+return(TRUE);
+}
+
+
+extern "C" struct fsdbReaderGetStatistics_t *fsdbReaderGetStatistics(void *ctx)
+{
+ffrObject *fsdb_obj = (ffrObject *)ctx;
+struct fsdbReaderGetStatistics_t *gs = (struct fsdbReaderGetStatistics_t *)calloc(1, sizeof(struct fsdbReaderGetStatistics_t));
+
+fsdb_obj->ffrSetTreeCBFunc(__fsdbReaderGetStatisticsCB, gs);
+fsdb_obj->ffrReadScopeVarTree();
+
+return(gs);
+}
+
+
+static void
+__DumpScope(fsdbTreeCBDataScope* scope, void (*cb)(void *))
+{
+str_T type;
+char bf[65537];
+
+switch (scope->type)
+ {
+ case FSDB_ST_VCD_MODULE:
+ type = (str_T) "vcd_module";
+ break;
+
+ case FSDB_ST_VCD_TASK:
+ type = (str_T) "vcd_task";
+ break;
+
+ case FSDB_ST_VCD_FUNCTION:
+ type = (str_T) "vcd_function";
+ break;
+
+ case FSDB_ST_VCD_BEGIN:
+ type = (str_T) "vcd_begin";
+ break;
+
+ case FSDB_ST_VCD_FORK:
+ type = (str_T) "vcd_fork";
+ break;
+
+ case FSDB_ST_VCD_GENERATE:
+ type = (str_T) "vcd_generate";
+ break;
+
+ case FSDB_ST_SV_INTERFACE:
+ type = (str_T) "sv_interface";
+ break;
+
+ default:
+ type = (str_T) "unknown_scope_type";
+ break;
+ }
+
+sprintf(bf, "Scope: %s %s %s", type, scope->name, scope->module ? scope->module : "NULL");
+cb(bf);
+}
+
+
+static char* itoa_2(int value, char* result)
+{
+char* ptr = result, *ptr1 = result, tmp_char;
+int tmp_value;
+
+do {
+ tmp_value = value;
+ value /= 10;
+ *ptr++ = "9876543210123456789" [9 + (tmp_value - value * 10)];
+} while ( value );
+
+if (tmp_value < 0) *ptr++ = '-';
+result = ptr;
+*ptr-- = '\0';
+while(ptr1 < ptr) {
+ tmp_char = *ptr;
+ *ptr--= *ptr1;
+ *ptr1++ = tmp_char;
+}
+return(result);
+}
+
+
+static void
+__DumpVar(fsdbTreeCBDataVar *var, void (*cb)(void *))
+{
+str_T type;
+str_T bpb;
+str_T direction;
+char *pnt;
+int len;
+int typelen;
+int dirlen;
+char bf[65537];
+
+switch(var->bytes_per_bit)
+ {
+ case FSDB_BYTES_PER_BIT_1B:
+ bpb = (str_T) "1B";
+ break;
+
+ case FSDB_BYTES_PER_BIT_2B:
+ bpb = (str_T) "2B";
+ break;
+
+ case FSDB_BYTES_PER_BIT_4B:
+ bpb = (str_T) "4B";
+ break;
+
+ case FSDB_BYTES_PER_BIT_8B:
+ bpb = (str_T) "8B";
+ break;
+
+ default:
+ bpb = (str_T) "XB";
+ break;
+ }
+
+switch (var->type)
+ {
+ case FSDB_VT_VCD_EVENT:
+ type = (str_T) "vcd_event";
+ typelen = 9;
+ break;
+
+ case FSDB_VT_VCD_INTEGER:
+ type = (str_T) "vcd_integer";
+ typelen = 11;
+ break;
+
+ case FSDB_VT_VCD_PARAMETER:
+ type = (str_T) "vcd_parameter";
+ typelen = 13;
+ break;
+
+ case FSDB_VT_VCD_REAL:
+ type = (str_T) "vcd_real";
+ typelen = 8;
+ break;
+
+ case FSDB_VT_VCD_REG:
+ type = (str_T) "vcd_reg";
+ typelen = 7;
+ break;
+
+ case FSDB_VT_VCD_SUPPLY0:
+ type = (str_T) "vcd_supply0";
+ typelen = 11;
+ break;
+
+ case FSDB_VT_VCD_SUPPLY1:
+ type = (str_T) "vcd_supply1";
+ typelen = 11;
+ break;
+
+ case FSDB_VT_VCD_TIME:
+ type = (str_T) "vcd_time";
+ typelen = 8;
+ break;
+
+ case FSDB_VT_VCD_TRI:
+ type = (str_T) "vcd_tri";
+ typelen = 7;
+ break;
+
+ case FSDB_VT_VCD_TRIAND:
+ type = (str_T) "vcd_triand";
+ typelen = 10;
+ break;
+
+ case FSDB_VT_VCD_TRIOR:
+ type = (str_T) "vcd_trior";
+ typelen = 9;
+ break;
+
+ case FSDB_VT_VCD_TRIREG:
+ type = (str_T) "vcd_trireg";
+ typelen = 10;
+ break;
+
+ case FSDB_VT_VCD_TRI0:
+ type = (str_T) "vcd_tri0";
+ typelen = 8;
+ break;
+
+ case FSDB_VT_VCD_TRI1:
+ type = (str_T) "vcd_tri1";
+ typelen = 8;
+ break;
+
+ case FSDB_VT_VCD_WAND:
+ type = (str_T) "vcd_wand";
+ typelen = 8;
+ break;
+
+ case FSDB_VT_VCD_WIRE:
+ type = (str_T) "vcd_wire";
+ typelen = 8;
+ break;
+
+ case FSDB_VT_VCD_WOR:
+ type = (str_T) "vcd_wor";
+ typelen = 7;
+ break;
+
+ case FSDB_VT_VHDL_SIGNAL:
+ case FSDB_VT_VHDL_VARIABLE:
+ case FSDB_VT_VHDL_CONSTANT:
+ case FSDB_VT_VHDL_FILE:
+ case FSDB_VT_VCD_MEMORY:
+ case FSDB_VT_VHDL_MEMORY:
+ case FSDB_VT_VCD_MEMORY_DEPTH:
+ case FSDB_VT_VHDL_MEMORY_DEPTH:
+ default:
+ type = (str_T) "vcd_wire";
+ typelen = 8;
+ break;
+ }
+
+ switch(var->direction)
+ {
+ case FSDB_VD_INPUT: direction = (str_T) "input"; dirlen = 5; break;
+ case FSDB_VD_OUTPUT: direction = (str_T) "output"; dirlen = 6; break;
+ case FSDB_VD_INOUT: direction = (str_T) "inout"; dirlen = 5; break;
+ case FSDB_VD_BUFFER: direction = (str_T) "buffer"; dirlen = 6; break;
+ case FSDB_VD_LINKAGE: direction = (str_T) "linkage"; dirlen = 7; break;
+ case FSDB_VD_IMPLICIT:
+ default: direction = (str_T) "implicit"; dirlen = 8; break;
+ }
+
+/*
+sprintf(bf, "Var: %s %s l:%d r:%d %s %d %s %d", type, var->name, var->lbitnum, var->rbitnum,
+ direction,
+ var->u.idcode, bpb, var->dtidcode);
+*/
+
+memcpy(bf, "Var: ", 5);
+pnt = bf+5;
+len = typelen; /* strlen(type) */
+memcpy(pnt, type, len);
+pnt += len;
+*(pnt++) = ' ';
+len = strlen(var->name);
+memcpy(pnt, var->name, len);
+pnt += len;
+memcpy(pnt, " l:", 3);
+pnt += 3;
+pnt = itoa_2(var->lbitnum, pnt);
+memcpy(pnt, " r:", 3);
+pnt += 3;
+pnt = itoa_2(var->rbitnum, pnt);
+*(pnt++) = ' ';
+len = dirlen; /* strlen(direction) */
+memcpy(pnt, direction, len);
+pnt += len;
+*(pnt++) = ' ';
+pnt = itoa_2(var->u.idcode, pnt);
+*(pnt++) = ' ';
+len = 2; /* strlen(bpb) */
+memcpy(pnt, bpb, len);
+pnt += len;
+*(pnt++) = ' ';
+pnt = itoa_2(var->dtidcode, pnt);
+*(pnt) = 0;
+
+cb(bf);
+}
+
+
+static void
+__DumpStruct(fsdbTreeCBDataStructBegin* str, void (*cb)(void *))
+{
+char bf[65537];
+
+/* printf("NAME: %s FIELDS: %d TYPE: %d is_partial_dumped: %d\n", str->name, (int)str->fieldCount, (int)str->type, (int)str->is_partial_dumped); */
+
+sprintf(bf, "Scope: vcd_struct %s %s", str->name, "NULL");
+cb(bf);
+}
+
+
+static void
+__DumpArray(fsdbTreeCBDataArrayBegin* arr, void (*cb)(void *))
+{
+/* printf("NAME: %s SIZE: %d is_partial_dumped: %d\n", arr->name, (int)arr->size, (int)arr->is_partial_dumped); */
+}
+
+
+
+static bool_T __MyTreeCB(fsdbTreeCBType cb_type,
+ void *client_data, void *tree_cb_data)
+{
+void (*cb)(void *) = (void (*)(void *))client_data;
+char bf[16];
+
+switch (cb_type)
+ {
+ case FSDB_TREE_CBT_BEGIN_TREE:
+ /* fprintf(stderr, "Begin Tree:\n"); */
+ break;
+
+ case FSDB_TREE_CBT_SCOPE:
+ __DumpScope((fsdbTreeCBDataScope*)tree_cb_data, cb);
+ break;
+
+ case FSDB_TREE_CBT_VAR:
+ __DumpVar((fsdbTreeCBDataVar*)tree_cb_data, cb);
+ break;
+
+ case FSDB_TREE_CBT_UPSCOPE:
+ strcpy(bf, "Upscope:");
+ cb(bf);
+ break;
+
+ case FSDB_TREE_CBT_END_TREE:
+ /* fprintf(stderr, "End Tree:\n"); */
+ break;
+
+ case FSDB_TREE_CBT_STRUCT_BEGIN:
+ __DumpStruct((fsdbTreeCBDataStructBegin*)tree_cb_data, cb);
+ break;
+
+ case FSDB_TREE_CBT_STRUCT_END:
+ strcpy(bf, "Upscope:");
+ cb(bf);
+ break;
+
+ /* not yet supported */
+ case FSDB_TREE_CBT_ARRAY_BEGIN:
+ __DumpArray((fsdbTreeCBDataArrayBegin*)tree_cb_data, cb);
+ break;
+ case FSDB_TREE_CBT_ARRAY_END:
+ break;
+
+ case FSDB_TREE_CBT_FILE_TYPE:
+ case FSDB_TREE_CBT_SIMULATOR_VERSION:
+ case FSDB_TREE_CBT_SIMULATION_DATE:
+ case FSDB_TREE_CBT_X_AXIS_SCALE:
+ case FSDB_TREE_CBT_END_ALL_TREE:
+ case FSDB_TREE_CBT_RECORD_BEGIN:
+ case FSDB_TREE_CBT_RECORD_END:
+ break;
+
+ default:
+ return(FALSE);
+ }
+
+return(TRUE);
+}
+
+
+#else
+
+static void dummy_compilation_unit(void)
+{
+
+}
+
+#endif
diff --git a/src/fsdb_wrapper_api.h b/src/fsdb_wrapper_api.h
new file mode 100644
index 0000000..641034e
--- /dev/null
+++ b/src/fsdb_wrapper_api.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright (c) Tony Bybell 2013.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ */
+
+#ifndef FSDB_WRAPPER_API_H
+#define FSDB_WRAPPER_API_H
+
+#if defined(FSDB_IS_PRESENT) && defined(FSDB_NSYS_IS_PRESENT)
+#define WAVE_FSDB_READER_IS_PRESENT
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <inttypes.h>
+
+
+struct fsdbReaderGetStatistics_t
+{
+int varCount;
+int scopeCount;
+};
+
+
+void *fsdbReaderOpenFile(char *nam);
+void fsdbReaderReadScopeVarTree(void *ctx,void (*cb)(void *));
+int fsdbReaderGetMaxVarIdcode(void *ctx);
+struct fsdbReaderGetStatistics_t *fsdbReaderGetStatistics(void *ctx);
+void fsdbReaderAddToSignalList(void *ctx, int i);
+void fsdbReaderLoadSignals(void *ctx);
+void *fsdbReaderCreateVCTraverseHandle(void *ctx, int i);
+int fsdbReaderHasIncoreVC(void *ctx, void *hdl);
+void fsdbReaderFree(void *ctx, void *hdl);
+uint64_t fsdbReaderGetMinXTag(void *ctx, void *hdl);
+uint64_t fsdbReaderGetMaxXTag(void *ctx, void *hdl);
+void fsdbReaderGotoXTag(void *ctx, void *hdl, uint64_t tim);
+uint64_t fsdbReaderGetXTag(void *ctx, void *hdl);
+int fsdbReaderGetVC(void *ctx, void *hdl, void **val_ptr);
+int fsdbReaderGotoNextVC(void *ctx, void *hdl);
+void fsdbReaderUnloadSignals(void *ctx);
+void fsdbReaderClose(void *ctx);
+int fsdbReaderGetBytesPerBit(void *hdl);
+int fsdbReaderGetBitSize(void *hdl);
+int fsdbReaderGetVarType(void *hdl);
+char *fsdbReaderTranslateVC(void *hdl, void *val_ptr);
+int fsdbReaderExtractScaleUnit(void *ctx, int *mult, char *scale);
+int fsdbReaderGetMinFsdbTag64(void *ctx, uint64_t *tim);
+int fsdbReaderGetMaxFsdbTag64(void *ctx, uint64_t *tim);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
diff --git a/src/fst.c b/src/fst.c
index 8340ca8..a27db9f 100644
--- a/src/fst.c
+++ b/src/fst.c
@@ -168,6 +168,13 @@ while((h = fstReaderIterateHier(xc)))
case FST_ST_VCD_FUNCTION: ttype = TREE_VCD_ST_FUNCTION; break;
case FST_ST_VCD_BEGIN: ttype = TREE_VCD_ST_BEGIN; break;
case FST_ST_VCD_FORK: ttype = TREE_VCD_ST_FORK; break;
+ case FST_ST_VCD_GENERATE: ttype = TREE_VCD_ST_GENERATE; break;
+ case FST_ST_VCD_STRUCT: ttype = TREE_VCD_ST_STRUCT; break;
+ case FST_ST_VCD_UNION: ttype = TREE_VCD_ST_UNION; break;
+ case FST_ST_VCD_CLASS: ttype = TREE_VCD_ST_CLASS; break;
+ case FST_ST_VCD_INTERFACE: ttype = TREE_VCD_ST_INTERFACE; break;
+ case FST_ST_VCD_PACKAGE: ttype = TREE_VCD_ST_PACKAGE; break;
+ case FST_ST_VCD_PROGRAM: ttype = TREE_VCD_ST_PROGRAM; break;
default: ttype = TREE_UNKNOWN; break;
}
@@ -178,6 +185,7 @@ while((h = fstReaderIterateHier(xc)))
GLOBALS->fst_scope_name = fstReaderPopScope(xc);
GLOBALS->fst_scope_name_len = fstReaderGetCurrentScopeLen(xc);
break;
+
case FST_HT_VAR:
/* GLOBALS->fst_scope_name = fstReaderGetCurrentFlatScope(xc); */
/* GLOBALS->fst_scope_name_len = fstReaderGetCurrentScopeLen(xc); */
@@ -207,6 +215,12 @@ while((h = fstReaderIterateHier(xc)))
{
*msb = *lsb = -1;
}
+ else if ((h->u.var.length > 1) && !col_last && lb_last) /* add for NC arrays that don't add final explicit bitrange like VCS does */
+ {
+ lb_last = NULL;
+ *msb = h->u.var.length -1;
+ *lsb = 0;
+ }
else
{
int sgna = 1, sgnb = 1;
@@ -263,6 +277,13 @@ while((h = fstReaderIterateHier(xc)))
*nam = s;
return(h);
break;
+
+ case FST_HT_ATTRBEGIN: /* currently ignored */
+ case FST_HT_ATTREND:
+ break;
+
+ default:
+ break;
}
}
@@ -420,7 +441,7 @@ for(i=0;i<GLOBALS->numfacs;i++)
char *str;
struct fac *f;
int hier_len, name_len, tlen;
- unsigned char nvt;
+ unsigned char nvt, nvd;
int longest_nam_candidate = 0;
char *fnam;
@@ -485,6 +506,15 @@ for(i=0;i<GLOBALS->numfacs;i++)
if(h->u.var.length)
{
+ switch(h->u.var.direction)
+ {
+ case FST_VD_INPUT: nvd = ND_DIR_IN; GLOBALS->nonimplicit_direction_encountered = 1; break;
+ case FST_VD_OUTPUT: nvd = ND_DIR_OUT; GLOBALS->nonimplicit_direction_encountered = 1; break;
+ case FST_VD_INOUT: nvd = ND_DIR_INOUT; GLOBALS->nonimplicit_direction_encountered = 1; break;
+ case FST_VD_IMPLICIT:
+ default: nvd = ND_DIR_IMPLICIT; break;
+ }
+
switch(h->u.var.typ)
{
case FST_VT_VCD_EVENT: nvt = ND_VCD_EVENT; break;
@@ -507,7 +537,18 @@ for(i=0;i<GLOBALS->numfacs;i++)
case FST_VT_VCD_WIRE: nvt = ND_VCD_WIRE; break;
case FST_VT_VCD_WOR: nvt = ND_VCD_WOR; break;
case FST_VT_VCD_PORT: nvt = ND_VCD_PORT; break;
+
case FST_VT_GEN_STRING: nvt = ND_GEN_STRING; break;
+
+ case FST_VT_SV_BIT: nvt = ND_SV_BIT; break;
+ case FST_VT_SV_LOGIC: nvt = ND_SV_LOGIC; break;
+ case FST_VT_SV_INT: nvt = ND_SV_INT; break;
+ case FST_VT_SV_SHORTINT: nvt = ND_SV_SHORTINT; break;
+ case FST_VT_SV_LONGINT: nvt = ND_SV_LONGINT; break;
+ case FST_VT_SV_BYTE: nvt = ND_SV_BYTE; break;
+ case FST_VT_SV_ENUM: nvt = ND_SV_ENUM; break;
+ case FST_VT_SV_SHORTREAL: nvt = ND_SV_SHORTREAL; break;
+
default: nvt = ND_UNSPECIFIED_DEFAULT; break;
}
@@ -521,6 +562,7 @@ for(i=0;i<GLOBALS->numfacs;i++)
case FST_VT_VCD_REAL:
case FST_VT_VCD_REAL_PARAMETER:
case FST_VT_VCD_REALTIME:
+ case FST_VT_SV_SHORTREAL:
GLOBALS->mvlfacs_fst_c_3[i].flags = VZT_RD_SYM_F_DOUBLE;
break;
@@ -706,6 +748,7 @@ for(i=0;i<GLOBALS->numfacs;i++)
n->mv.mvlfac = GLOBALS->mvlfacs_fst_c_3+i;
GLOBALS->mvlfacs_fst_c_3[i].working_node = n;
n->vartype = nvt;
+ n->vardir = nvd;
if((f->len>1)||(f->flags&(VZT_RD_SYM_F_DOUBLE|VZT_RD_SYM_F_STRING)))
{
diff --git a/src/globals.c b/src/globals.c
index b2fb0bb..1ca4b5d 100644
--- a/src/globals.c
+++ b/src/globals.c
@@ -47,6 +47,8 @@
#include "fst.h"
#include "hierpack.h"
+#include "fsdb_wrapper_api.h"
+
#ifdef __MINGW32__
#define sleep(x) Sleep(x)
#endif
@@ -226,11 +228,13 @@ NULL, /* atoi_cont_ptr 78 */
0, /* entry_entry_c_1 81 */
NULL, /* entrybox_text 82 */
0, /* cleanup_entry_c_1 83 */
-
+0, /* entry_raise_timer */
/*
* extload.c
*/
+0, /* extload_ffr_import_count */
+NULL, /* extload_ffr_ctx */
NULL, /* extload */
NULL, /* extload_idcodes */
NULL, /* extload_inv_idcodes */
@@ -238,6 +242,17 @@ NULL, /* extload_inv_idcodes */
0, /* extload_lastmod */
0, /* extload_already_errored */
#endif
+NULL, /* extload_namecache */
+NULL, /* extload_sym_block */
+NULL, /* extload_node_block */
+NULL, /* extload_xc */
+NULL, /* extload_prevsymroot */
+NULL, /* extload_prevsym */
+0, /* extload_i */
+0, /* extload_hlen */
+0, /* extload_vt_prev */
+0, /* extload_vd_prev */
+
/*
* fetchbuttons.c
@@ -298,6 +313,7 @@ NULL, /* mvlfacs_fst_rvs_alias */
0, /* busycnt_fst_c_2 */
NULL, /* double_curr_fst */
NULL, /* double_fini_fst */
+0, /* nonimplicit_direction_encountered */
/*
@@ -647,6 +663,14 @@ NULL, /* hiericon_begin_pixmap */
NULL, /* hiericon_begin_mask */
NULL, /* hiericon_fork_pixmap */
NULL, /* hiericon_fork_mask */
+NULL, /* hiericon_interface_pixmap */
+NULL, /* hiericon_interface_mask */
+NULL, /* hiericon_svpackage_pixmap */
+NULL, /* hiericon_svpackage_mask */
+NULL, /* hiericon_program_pixmap */
+NULL, /* hiericon_program_mask */
+NULL, /* hiericon_class_pixmap */
+NULL, /* hiericon_class_mask */
NULL, /* hiericon_design_pixmap */
NULL, /* hiericon_design_mask */
NULL, /* hiericon_block_pixmap */
@@ -1976,14 +2000,24 @@ void reload_into_new_context_2(void)
#endif
break;
+#ifdef EXTLOAD_SUFFIX
+ case EXTLOAD_FILE:
+ if(GLOBALS->extload_ffr_ctx)
+ {
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+ fsdbReaderClose(GLOBALS->extload_ffr_ctx);
+#endif
+ GLOBALS->extload_ffr_ctx = NULL;
+ }
+ break;
+#endif
+
case MISSING_FILE:
case DUMPLESS_FILE:
case GHW_FILE:
case VCD_FILE:
case VCD_RECODER_FILE:
-#ifdef EXTLOAD_SUFFIX
- case EXTLOAD_FILE:
-#endif
+ default:
/* do nothing */ break;
}
@@ -2520,15 +2554,25 @@ void free_and_destroy_page_context(void)
#endif
#endif
break;
+
+#ifdef EXTLOAD_SUFFIX
+ case EXTLOAD_FILE:
+ if(GLOBALS->extload_ffr_ctx)
+ {
+#ifdef WAVE_FSDB_READER_IS_PRESENT
+ fsdbReaderClose(GLOBALS->extload_ffr_ctx);
+#endif
+ GLOBALS->extload_ffr_ctx = NULL;
+ }
+ break;
+#endif
case MISSING_FILE:
case DUMPLESS_FILE:
case GHW_FILE:
case VCD_FILE:
case VCD_RECODER_FILE:
-#ifdef EXTLOAD_SUFFIX
- case EXTLOAD_FILE:
-#endif
+ default:
/* do nothing */ break;
}
@@ -2813,7 +2857,14 @@ void clone_icon_pointers_across_contexts(struct Global *a, struct Global *b)
a->hiericon_begin_mask = b->hiericon_begin_mask;
a->hiericon_fork_pixmap = b->hiericon_fork_pixmap;
a->hiericon_fork_mask = b->hiericon_fork_mask;
-
+ a->hiericon_interface_pixmap = b->hiericon_interface_pixmap;
+ a->hiericon_interface_mask = b->hiericon_interface_mask;
+ a->hiericon_svpackage_pixmap = b->hiericon_svpackage_pixmap;
+ a->hiericon_svpackage_mask = b->hiericon_svpackage_mask;
+ a->hiericon_program_pixmap = b->hiericon_program_pixmap;
+ a->hiericon_program_mask = b->hiericon_program_mask;
+ a->hiericon_class_pixmap = b->hiericon_class_pixmap;
+ a->hiericon_class_mask = b->hiericon_class_mask;
a->hiericon_design_pixmap = b->hiericon_design_pixmap;
a->hiericon_design_mask = b->hiericon_design_mask;
a->hiericon_block_pixmap = b->hiericon_block_pixmap;
diff --git a/src/globals.h b/src/globals.h
index 89cc74e..33e0624 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -228,9 +228,12 @@ GtkWidget *window_entry_c_1; /* from entry.c 81 */
GtkWidget *entry_entry_c_1; /* from entry.c 82 */
char *entrybox_text; /* from entry.c 83 */
void (*cleanup_entry_c_1)(void); /* from entry.c 84 */
+int entry_raise_timer;
/* extload.c */
+unsigned int extload_ffr_import_count; /* from extload.c */
+void *extload_ffr_ctx; /* from extload.c */
FILE *extload; /* from extload.c */
unsigned int *extload_idcodes; /* from extload.c */
int *extload_inv_idcodes; /* from extload.c */
@@ -238,6 +241,16 @@ int *extload_inv_idcodes; /* from extload.c */
time_t extload_lastmod; /* from extload.c */
char extload_already_errored; /* from extload.c */
#endif
+char **extload_namecache;
+struct symbol *extload_sym_block;
+struct Node *extload_node_block;
+void *extload_xc;
+struct symbol *extload_prevsymroot;
+struct symbol *extload_prevsym;
+int extload_i;
+int extload_hlen;
+unsigned char extload_vt_prev;
+unsigned char extload_vd_prev;
/*
@@ -299,6 +312,7 @@ fstHandle fst_maxhandle;
int busycnt_fst_c_2;
double *double_curr_fst;
double *double_fini_fst;
+char nonimplicit_direction_encountered;
/*
@@ -646,6 +660,14 @@ GdkDrawable *hiericon_begin_pixmap; /* from pixmaps.c */
GdkDrawable *hiericon_begin_mask; /* from pixmaps.c */
GdkDrawable *hiericon_fork_pixmap; /* from pixmaps.c */
GdkDrawable *hiericon_fork_mask; /* from pixmaps.c */
+GdkDrawable *hiericon_interface_pixmap;
+GdkDrawable *hiericon_interface_mask;
+GdkDrawable *hiericon_svpackage_pixmap;
+GdkDrawable *hiericon_svpackage_mask;
+GdkDrawable *hiericon_program_pixmap;
+GdkDrawable *hiericon_program_mask;
+GdkDrawable *hiericon_class_pixmap;
+GdkDrawable *hiericon_class_mask;
GdkDrawable *hiericon_design_pixmap;
GdkDrawable *hiericon_design_mask;
GdkDrawable *hiericon_block_pixmap;
diff --git a/src/helpers/Makefile.in b/src/helpers/Makefile.in
index ce7b8a0..3975ee3 100644
--- a/src/helpers/Makefile.in
+++ b/src/helpers/Makefile.in
@@ -204,6 +204,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -217,6 +220,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -288,6 +293,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/src/helpers/evcd2vcd.c b/src/helpers/evcd2vcd.c
index 495e28d..5a2180a 100644
--- a/src/helpers/evcd2vcd.c
+++ b/src/helpers/evcd2vcd.c
@@ -485,6 +485,10 @@ if (optind < argc)
vname = malloc(strlen(argv[optind])+1);
strcpy(vname, argv[optind++]);
}
+ else
+ {
+ break;
+ }
}
}
diff --git a/src/helpers/fst/Makefile.in b/src/helpers/fst/Makefile.in
index 3d7c9a4..65ad7a3 100644
--- a/src/helpers/fst/Makefile.in
+++ b/src/helpers/fst/Makefile.in
@@ -143,6 +143,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -156,6 +159,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -227,6 +232,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/src/helpers/fst/fstapi.c b/src/helpers/fst/fstapi.c
index da65758..0bb79cf 100644
--- a/src/helpers/fst/fstapi.c
+++ b/src/helpers/fst/fstapi.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009-2012 Tony Bybell.
+ * Copyright (c) 2009-2013 Tony Bybell.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -548,6 +548,8 @@ if(rc<0)
perror("Why");
#endif
}
+
+return(rc);
}
@@ -1840,6 +1842,26 @@ if(xc && vers)
}
+void fstWriterSetComment(void *ctx, const char *comm)
+{
+struct fstWriterContext *xc = (struct fstWriterContext *)ctx;
+if(xc && comm)
+ {
+ char *s = strdup(comm);
+ char *sf = s;
+
+ while(*s)
+ {
+ if((*s == '\n') || (*s == '\r')) *s = ' ';
+ s++;
+ }
+
+ fstWriterSetAttrBegin(xc, FST_AT_MISC, FST_MT_COMMENT, sf, 0);
+ free(sf);
+ }
+}
+
+
void fstWriterSetTimescale(void *ctx, int ts)
{
struct fstWriterContext *xc = (struct fstWriterContext *)ctx;
@@ -1985,7 +2007,7 @@ return(0);
/*
- * writer scope/var creation
+ * writer attr/scope/var creation
*/
fstHandle fstWriterCreateVar(void *ctx, enum fstVarType vt, enum fstVarDir vd,
uint32_t len, const char *nam, fstHandle aliasHandle)
@@ -2007,7 +2029,7 @@ if(xc && nam)
fputc(0, xc->hier_handle);
xc->hier_file_len += (nlen+3);
- if((vt == FST_VT_VCD_REAL) || (vt == FST_VT_VCD_REAL_PARAMETER) || (vt == FST_VT_VCD_REALTIME))
+ if((vt == FST_VT_VCD_REAL) || (vt == FST_VT_VCD_REAL_PARAMETER) || (vt == FST_VT_VCD_REALTIME) || (vt == FST_VT_SV_SHORTREAL))
{
is_real = 1;
len = 8; /* recast number of bytes to that of what a double is */
@@ -2091,7 +2113,7 @@ void fstWriterSetScope(void *ctx, enum fstScopeType scopetype,
{
struct fstWriterContext *xc = (struct fstWriterContext *)ctx;
-if(xc && scopename)
+if(xc)
{
fputc(FST_ST_VCD_SCOPE, xc->hier_handle);
if((scopetype < FST_ST_VCD_MODULE) || (scopetype > FST_ST_MAX)) { scopetype = FST_ST_VCD_MODULE; }
@@ -2127,6 +2149,54 @@ if(xc)
}
+void fstWriterSetAttrBegin(void *ctx, enum fstAttrType attrtype, int subtype,
+ const char *attrname, uint64_t arg)
+{
+struct fstWriterContext *xc = (struct fstWriterContext *)ctx;
+
+if(xc)
+ {
+ fputc(FST_ST_GEN_ATTRBEGIN, xc->hier_handle);
+ if((attrtype < FST_AT_MISC) || (attrtype > FST_AT_MAX)) { attrtype = FST_AT_MISC; subtype = FST_MT_UNKNOWN; }
+ fputc(attrtype, xc->hier_handle);
+
+ switch(attrtype)
+ {
+ case FST_AT_ARRAY: if((subtype < FST_AR_NONE) || (subtype > FST_AR_MAX)) subtype = FST_AR_NONE; break;
+ case FST_AT_ENUM: if((subtype < FST_EV_SV_INTEGER) || (subtype > FST_EV_MAX)) subtype = FST_EV_SV_INTEGER; break;
+ case FST_AT_PACK: if((subtype < FST_PT_NONE) || (subtype > FST_PT_MAX)) subtype = FST_PT_NONE; break;
+
+ case FST_AT_MISC:
+ default: break;
+ }
+
+ fputc(subtype, xc->hier_handle);
+ fprintf(xc->hier_handle, "%s%c",
+ attrname ? attrname : "", 0);
+
+ if(attrname)
+ {
+ xc->hier_file_len += strlen(attrname);
+ }
+
+ xc->hier_file_len += 4; /* FST_ST_GEN_ATTRBEGIN + type + subtype + string terminating zero */
+ xc->hier_file_len += fstWriterVarint(xc->hier_handle, arg);
+ }
+}
+
+
+void fstWriterSetAttrEnd(void *ctx)
+{
+struct fstWriterContext *xc = (struct fstWriterContext *)ctx;
+
+if(xc)
+ {
+ fputc(FST_ST_GEN_ATTREND, xc->hier_handle);
+ xc->hier_file_len++;
+ }
+}
+
+
/*
* value and time change emission
*/
@@ -2385,14 +2455,33 @@ static const char *vartypes[] = {
"event", "integer", "parameter", "real", "real_parameter",
"reg", "supply0", "supply1", "time", "tri",
"triand", "trior", "trireg", "tri0", "tri1",
- "wand", "wire", "wor", "port", "array", "realtime",
- "string"
+ "wand", "wire", "wor", "port", "sparray", "realtime",
+ "string",
+ "bit", "logic", "int", "shortint", "longint", "byte", "enum", "shortreal"
};
static const char *modtypes[] = {
- "module", "task", "function", "begin", "fork"
+ "module", "task", "function", "begin", "fork", "generate", "struct", "union", "class", "interface", "package", "program"
};
+static const char *attrtypes[] = {
+ "misc", "array", "enum", "class"
+ };
+
+static const char *arraytypes[] = {
+ "none", "unpacked", "packed", "sparse"
+ };
+
+static const char *enumvaluetypes[] = {
+ "integer", "bit", "logic", "int", "shortint", "longint", "byte",
+ "unsigned_integer", "unsigned_bit", "unsigned_logic", "unsigned_int", "unsigned_shortint", "unsigned_longint", "unsigned_byte"
+ };
+
+static const char *packtypes[] = {
+ "none", "unpacked", "packed", "tagged_packed"
+ };
+
+
struct fstCurrHier
{
struct fstCurrHier *prev;
@@ -2490,6 +2579,8 @@ if(rc<0)
perror("Why");
#endif
}
+
+return(rc);
}
@@ -3079,6 +3170,25 @@ if(!(isfeof=feof(xc->fh)))
xc->hier.htyp = FST_HT_UPSCOPE;
break;
+ case FST_ST_GEN_ATTRBEGIN:
+ xc->hier.htyp = FST_HT_ATTRBEGIN;
+ xc->hier.u.attr.typ = fgetc(xc->fh);
+ xc->hier.u.attr.subtype = fgetc(xc->fh);
+ xc->hier.u.attr.name = pnt = xc->str_scope_nam;
+ while((ch = fgetc(xc->fh)))
+ {
+ *(pnt++) = ch;
+ }; /* scopename */
+ *pnt = 0;
+ xc->hier.u.attr.name_length = pnt - xc->hier.u.scope.name;
+
+ xc->hier.u.attr.arg = fstReaderVarint64(xc->fh);
+ break;
+
+ case FST_ST_GEN_ATTREND:
+ xc->hier.htyp = FST_HT_ATTREND;
+ break;
+
case FST_VT_VCD_EVENT:
case FST_VT_VCD_INTEGER:
case FST_VT_VCD_PARAMETER:
@@ -3098,9 +3208,17 @@ if(!(isfeof=feof(xc->fh)))
case FST_VT_VCD_WIRE:
case FST_VT_VCD_WOR:
case FST_VT_VCD_PORT:
- case FST_VT_VCD_ARRAY:
+ case FST_VT_VCD_SPARRAY:
case FST_VT_VCD_REALTIME:
case FST_VT_GEN_STRING:
+ case FST_VT_SV_BIT:
+ case FST_VT_SV_LOGIC:
+ case FST_VT_SV_INT:
+ case FST_VT_SV_SHORTINT:
+ case FST_VT_SV_LONGINT:
+ case FST_VT_SV_BYTE:
+ case FST_VT_SV_ENUM:
+ case FST_VT_SV_SHORTREAL:
xc->hier.htyp = FST_HT_VAR;
xc->hier.u.var.typ = tag;
@@ -3155,6 +3273,8 @@ int vartype;
uint32_t len, alias;
/* uint32_t maxvalpos=0; */
int num_signal_dyn = 65536;
+int attrtype, subtype;
+uint64_t attrarg;
if(!xc) return(0);
@@ -3233,6 +3353,7 @@ while(!feof(xc->fh))
{
case FST_ST_VCD_SCOPE:
scopetype = fgetc(xc->fh);
+ if((scopetype < FST_ST_VCD_MIN) || (scopetype > FST_ST_MAX)) scopetype = FST_ST_VCD_MODULE;
pnt = str;
while((ch = fgetc(xc->fh)))
{
@@ -3248,6 +3369,50 @@ while(!feof(xc->fh))
if(fv) fprintf(fv, "$upscope $end\n");
break;
+ case FST_ST_GEN_ATTRBEGIN:
+ attrtype = fgetc(xc->fh);
+ subtype = fgetc(xc->fh);
+ pnt = str;
+ while((ch = fgetc(xc->fh)))
+ {
+ *(pnt++) = ch;
+ }; /* attrname */
+ *pnt = 0;
+
+ attrarg = fstReaderVarint64(xc->fh);
+
+ if(fv)
+ {
+ switch(attrtype)
+ {
+ case FST_AT_ARRAY: if((subtype < FST_AR_NONE) || (subtype > FST_AR_MAX)) subtype = FST_AR_NONE;
+ fprintf(fv, "$attrbegin %s %s %s %"PRId64" $end\n", attrtypes[attrtype], arraytypes[subtype], str, attrarg);
+ break;
+ case FST_AT_ENUM: if((subtype < FST_EV_SV_INTEGER) || (subtype > FST_EV_MAX)) subtype = FST_EV_SV_INTEGER;
+ fprintf(fv, "$attrbegin %s %s %s %"PRId64" $end\n", attrtypes[attrtype], enumvaluetypes[subtype], str, attrarg);
+ break;
+ case FST_AT_PACK: if((subtype < FST_PT_NONE) || (subtype > FST_PT_MAX)) subtype = FST_PT_NONE;
+ fprintf(fv, "$attrbegin %s %s %s %"PRId64" $end\n", attrtypes[attrtype], packtypes[subtype], str, attrarg);
+ break;
+ case FST_AT_MISC:
+ default: attrtype = FST_AT_MISC;
+ if(subtype == FST_MT_COMMENT)
+ {
+ fprintf(fv, "$comment\n\t%s\n$end\n", str);
+ }
+ else
+ {
+ fprintf(fv, "$attrbegin %s %02x %s %"PRId64" $end\n", attrtypes[attrtype], subtype, str, attrarg);
+ }
+ break;
+ }
+ }
+ break;
+
+ case FST_ST_GEN_ATTREND:
+ if(fv) fprintf(fv, "$attrend $end\n");
+ break;
+
case FST_VT_VCD_EVENT:
case FST_VT_VCD_INTEGER:
case FST_VT_VCD_PARAMETER:
@@ -3267,9 +3432,17 @@ while(!feof(xc->fh))
case FST_VT_VCD_WIRE:
case FST_VT_VCD_WOR:
case FST_VT_VCD_PORT:
- case FST_VT_VCD_ARRAY:
+ case FST_VT_VCD_SPARRAY:
case FST_VT_VCD_REALTIME:
case FST_VT_GEN_STRING:
+ case FST_VT_SV_BIT:
+ case FST_VT_SV_LOGIC:
+ case FST_VT_SV_INT:
+ case FST_VT_SV_SHORTINT:
+ case FST_VT_SV_LONGINT:
+ case FST_VT_SV_BYTE:
+ case FST_VT_SV_ENUM:
+ case FST_VT_SV_SHORTREAL:
vartype = tag;
/* vardir = */ fgetc(xc->fh); /* unused in VCD reader, but need to advance read pointer */
pnt = str;
@@ -3298,9 +3471,9 @@ while(!feof(xc->fh))
xc->longest_signal_value_len = len;
}
- if((vartype == FST_VT_VCD_REAL) || (vartype == FST_VT_VCD_REAL_PARAMETER) || (vartype == FST_VT_VCD_REALTIME))
+ if((vartype == FST_VT_VCD_REAL) || (vartype == FST_VT_VCD_REAL_PARAMETER) || (vartype == FST_VT_VCD_REALTIME) || (vartype == FST_VT_SV_SHORTREAL))
{
- len = 64;
+ len = (vartype != FST_VT_SV_SHORTREAL) ? 64 : 32;
xc->signal_typs[xc->maxhandle] = FST_VT_VCD_REAL;
}
if(fv)
@@ -3312,9 +3485,9 @@ while(!feof(xc->fh))
}
else
{
- if((vartype == FST_VT_VCD_REAL) || (vartype == FST_VT_VCD_REAL_PARAMETER) || (vartype == FST_VT_VCD_REALTIME))
+ if((vartype == FST_VT_VCD_REAL) || (vartype == FST_VT_VCD_REAL_PARAMETER) || (vartype == FST_VT_VCD_REALTIME) || (vartype == FST_VT_SV_SHORTREAL))
{
- len = 64;
+ len = (vartype != FST_VT_SV_SHORTREAL) ? 64 : 32;
xc->signal_typs[xc->maxhandle] = FST_VT_VCD_REAL;
}
if(fv)
diff --git a/src/helpers/fst/fstapi.h b/src/helpers/fst/fstapi.h
index bd7bacc..8f67319 100644
--- a/src/helpers/fst/fstapi.h
+++ b/src/helpers/fst/fstapi.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009-2012 Tony Bybell.
+ * Copyright (c) 2009-2013 Tony Bybell.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
@@ -59,9 +59,19 @@ enum fstScopeType {
FST_ST_VCD_FUNCTION = 2,
FST_ST_VCD_BEGIN = 3,
FST_ST_VCD_FORK = 4,
- FST_ST_VCD_MAX = 4,
+ FST_ST_VCD_GENERATE = 5,
+ FST_ST_VCD_STRUCT = 6,
+ FST_ST_VCD_UNION = 7,
+ FST_ST_VCD_CLASS = 8,
+ FST_ST_VCD_INTERFACE = 9,
+ FST_ST_VCD_PACKAGE = 10,
+ FST_ST_VCD_PROGRAM = 11,
+ FST_ST_VCD_MAX = 11,
- FST_ST_MAX = 4,
+ FST_ST_MAX = 11,
+
+ FST_ST_GEN_ATTRBEGIN = 252,
+ FST_ST_GEN_ATTREND = 253,
FST_ST_VCD_SCOPE = 254,
FST_ST_VCD_UPSCOPE = 255
@@ -88,11 +98,21 @@ enum fstVarType {
FST_VT_VCD_WIRE = 16,
FST_VT_VCD_WOR = 17,
FST_VT_VCD_PORT = 18,
- FST_VT_VCD_ARRAY = 19, /* used to define the rownum (index) port on the array */
+ FST_VT_VCD_SPARRAY = 19, /* used to define the rownum (index) port for a sparse array */
FST_VT_VCD_REALTIME = 20,
+
FST_VT_GEN_STRING = 21, /* generic string type (max len is defined dynamically via fstWriterEmitVariableLengthValueChange) */
- FST_VT_VCD_MAX = 21 /* end of VCD datatypes */
+ FST_VT_SV_BIT = 22,
+ FST_VT_SV_LOGIC = 23,
+ FST_VT_SV_INT = 24, /* declare as 31:0 */
+ FST_VT_SV_SHORTINT = 25, /* declare as 15:0 */
+ FST_VT_SV_LONGINT = 26, /* declare as 63:0 */
+ FST_VT_SV_BYTE = 27, /* declare as 7:0 */
+ FST_VT_SV_ENUM = 28, /* declare as appropriate type range */
+ FST_VT_SV_SHORTREAL = 29, /* declare and emit same as FST_VT_VCD_REAL */
+
+ FST_VT_VCD_MAX = 29 /* end of VCD datatypes */
};
enum fstVarDir {
@@ -108,8 +128,63 @@ enum fstHierType {
FST_HT_SCOPE = 0,
FST_HT_UPSCOPE = 1,
FST_HT_VAR = 2,
+ FST_HT_ATTRBEGIN = 3,
+ FST_HT_ATTREND = 4,
+
+ FST_HT_MAX = 4
+};
- FST_HT_MAX = 2
+enum fstAttrType {
+ FST_AT_MISC = 0,
+ FST_AT_ARRAY = 1,
+ FST_AT_ENUM = 2,
+ FST_AT_PACK = 3,
+
+ FST_AT_MAX = 3
+};
+
+enum fstMiscType {
+ FST_MT_COMMENT = 0, /* self-contained: does not need matching FST_HT_ATTREND, use fstWriterSetComment() to emit */
+ FST_MT_UNKNOWN = 1,
+
+ FST_MT_MAX = 1
+};
+
+enum fstArrayType {
+ FST_AR_NONE = 0,
+ FST_AR_UNPACKED = 1,
+ FST_AR_PACKED = 2,
+ FST_AR_SPARSE = 3,
+
+ FST_AR_MAX = 3
+};
+
+enum fstEnumValueType {
+ FST_EV_SV_INTEGER = 0,
+ FST_EV_SV_BIT = 1,
+ FST_EV_SV_LOGIC = 2,
+ FST_EV_SV_INT = 3,
+ FST_EV_SV_SHORTINT = 4,
+ FST_EV_SV_LONGINT = 5,
+ FST_EV_SV_BYTE = 6,
+ FST_EV_SV_UNSIGNED_INTEGER = 7,
+ FST_EV_SV_UNSIGNED_BIT = 8,
+ FST_EV_SV_UNSIGNED_LOGIC = 9,
+ FST_EV_SV_UNSIGNED_INT = 10,
+ FST_EV_SV_UNSIGNED_SHORTINT = 11,
+ FST_EV_SV_UNSIGNED_LONGINT = 12,
+ FST_EV_SV_UNSIGNED_BYTE = 13,
+
+ FST_EV_MAX = 13
+};
+
+enum fstPackType {
+ FST_PT_NONE = 0,
+ FST_PT_UNPACKED = 1,
+ FST_PT_PACKED = 2,
+ FST_PT_TAGGED_PACKED = 3,
+
+ FST_PT_MAX = 6
};
struct fstHier
@@ -119,7 +194,7 @@ unsigned char htyp;
union {
/* if htyp == FST_HT_SCOPE */
struct fstHierScope {
- unsigned char typ; /* FST_ST_VCD_MODULE ... FST_ST_VCD_FORK */
+ unsigned char typ; /* FST_ST_VCD_MODULE ... FST_ST_VCD_PROGRAM */
const char *name;
const char *component;
uint32_t name_length; /* strlen(u.scope.name) */
@@ -128,7 +203,7 @@ union {
/* if htyp == FST_HT_VAR */
struct fstHierVar {
- unsigned char typ; /* FST_VT_VCD_EVENT ... FST_VT_VCD_REALTIME */
+ unsigned char typ; /* FST_VT_VCD_EVENT ... FST_VT_GEN_STRING */
unsigned char direction; /* FST_VD_IMPLICIT ... FST_VD_INOUT */
const char *name;
uint32_t length;
@@ -136,6 +211,15 @@ union {
uint32_t name_length; /* strlen(u.var.name) */
unsigned is_alias : 1;
} var;
+
+ /* if htyp == FST_HT_ATTRBEGIN */
+ struct fstHierAttr {
+ unsigned char typ; /* FST_AT_MISC ... FST_AT_PACK */
+ unsigned char subtype; /* from fstArrayType, fstEnumValueType, fstPackType */
+ const char *name;
+ uint64_t arg; /* number of array elements, struct members, or some other payload (possibly ignored) */
+ uint32_t name_length; /* strlen(u.attr.name) */
+ } attr;
} u;
};
@@ -157,6 +241,7 @@ void *fstWriterCreate(const char *nam, int use_compressed_hier);
void fstWriterClose(void *ctx);
void fstWriterSetDate(void *ctx, const char *dat);
void fstWriterSetVersion(void *ctx, const char *vers);
+void fstWriterSetComment(void *ctx, const char *comm);
void fstWriterSetTimescale(void *ctx, int ts);
void fstWriterSetTimescaleFromString(void *ctx, const char *s);
void fstWriterSetTimezero(void *ctx, int64_t tim);
@@ -168,6 +253,9 @@ void fstWriterEmitVariableLengthValueChange(void *ctx, fstHandle handle, const v
void fstWriterEmitDumpActive(void *ctx, int enable);
void fstWriterEmitTimeChange(void *ctx, uint64_t tim);
void fstWriterFlushContext(void *ctx);
+void fstWriterSetAttrBegin(void *ctx, enum fstAttrType attrtype, int subtype,
+ const char *attrname, uint64_t arg);
+void fstWriterSetAttrEnd(void *ctx);
/*
* reader functions
diff --git a/src/helpers/fst2vcd.c b/src/helpers/fst2vcd.c
index 52ef1de..f47c01a 100644
--- a/src/helpers/fst2vcd.c
+++ b/src/helpers/fst2vcd.c
@@ -129,6 +129,10 @@ if (optind < argc)
fstname = malloc(strlen(argv[optind])+1);
strcpy(fstname, argv[optind++]);
}
+ else
+ {
+ break;
+ }
}
}
@@ -184,4 +188,3 @@ free(fstname);
exit(0);
}
-
diff --git a/src/helpers/lxt2miner.c b/src/helpers/lxt2miner.c
index abb4139..f801037 100644
--- a/src/helpers/lxt2miner.c
+++ b/src/helpers/lxt2miner.c
@@ -300,6 +300,10 @@ if (optind < argc)
lxname = malloc(strlen(argv[optind])+1);
strcpy(lxname, argv[optind++]);
}
+ else
+ {
+ break;
+ }
}
}
diff --git a/src/helpers/lxt2vcd.c b/src/helpers/lxt2vcd.c
index 93ae74f..f00ebd1 100644
--- a/src/helpers/lxt2vcd.c
+++ b/src/helpers/lxt2vcd.c
@@ -423,6 +423,10 @@ if (optind < argc)
lxname = malloc(strlen(argv[optind])+1);
strcpy(lxname, argv[optind++]);
}
+ else
+ {
+ break;
+ }
}
}
diff --git a/src/helpers/vcd2fst.c b/src/helpers/vcd2fst.c
index cb30636..9b0a788 100644
--- a/src/helpers/vcd2fst.c
+++ b/src/helpers/vcd2fst.c
@@ -46,21 +46,57 @@
#define VCD2FST_EXTLOADERS_CONV
#endif
+static uint32_t var_direction_idx = 0;
+static unsigned char *var_direction = NULL;
+
/*********************************************************/
/*** vvv extload component type name determination vvv ***/
/*********************************************************/
#if defined(VCD2FST_EXTLOAD_CONV)
-#include <Judy.h>
-
#ifdef _WAVE_HAVE_JUDY
+#include <Judy.h>
Pvoid_t PJArray = NULL;
#else
JRB comp_name_jrb = NULL;
#endif
static const char *fst_scope_name = NULL;
+static uint32_t numfacs = 0;
+
+static char *get_info(FILE *extload)
+{
+static char sbuff[65537];
+char * rc;
+
+for(;;)
+ {
+ rc = fgets(sbuff, 65536, extload);
+ if(!rc)
+ {
+ return(NULL);
+ }
+
+ switch(rc[0])
+ {
+ case 'v':
+ if(!strncmp("var creation cnt", rc, 16))
+ {
+ char *pnt = strchr(rc+16, ':');
+ if(pnt)
+ {
+ pnt++;
+ sscanf(pnt, "%d", &numfacs);
+ }
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+}
static char *get_scopename(void *xc, FILE *extload)
{
@@ -76,11 +112,65 @@ Jval jv;
for(;;)
{
rc = fgets(sbuff, 65536, extload);
- if(!rc)
+ if(rc)
+ {
+ if(isspace(rc[0]))
+ {
+ char sbuff2[65537];
+
+ sbuff2[0] = 0;
+
+ if(strstr(rc+1, "Struct Name:"))
+ {
+ sscanf(rc+14,"%s", sbuff2);
+ if(sbuff2[0])
+ {
+ sprintf(rc, "Scope: vcd_struct %s NULL\n", sbuff2);
+ }
+ }
+ else
+ if(strstr(rc+1, "Struct End"))
+ {
+ sprintf(rc, "Upscope:\n");
+ }
+ }
+ }
+ else
{
return(NULL);
}
+ if(rc[0] == 'V')
+ {
+ if(!strncmp("Var: ", rc, 5))
+ {
+ char *pnt = rc + 5;
+ char *pntd = strrchr(pnt, ':');
+
+ if(pntd)
+ {
+ unsigned char vd = FST_VD_IMPLICIT;
+
+ pntd = strchr(pntd, ' ');
+ if(pntd)
+ {
+ pntd++;
+ if(*pntd == 'o')
+ {
+ vd = FST_VD_OUTPUT;
+ }
+ else
+ if(!strncmp(pntd, "in", 2))
+ {
+ vd = (pntd[2] == 'p') ? FST_VD_INPUT : FST_VD_INOUT;
+ }
+ }
+
+ var_direction[var_direction_idx++] = vd;
+ }
+ }
+ }
+ else
if(rc[0] == 'S')
{
if(!strncmp(rc, "Scope:", 6))
@@ -88,14 +178,36 @@ for(;;)
char vht[2048];
char cname[2048];
char ctype[2048];
+ int mtype = FST_ST_VCD_MODULE;
+
+ cname[0] = ctype[1] = 0;
+
+ sscanf(rc+6, "%s %s %s", vht, cname, ctype+1);
+ if(!strncmp("vcd_", vht, 4))
+ {
+ switch(vht[4])
+ {
+ case 'g': mtype = FST_ST_VCD_GENERATE; break; /* other code looks for non-modules to replace type with */
+ case 's': mtype = FST_ST_VCD_STRUCT; break; /* other code looks for non-modules to replace type with */
+ default: break;
+ }
+ }
+ else
+ if(!strncmp("sv_", vht, 3))
+ {
+ switch(vht[3])
+ {
+ case 'i': mtype = FST_ST_VCD_INTERFACE; break; /* other code looks for non-modules to replace type with */
+ default: break;
+ }
+ }
- cname[0] = ctype[0] = 0;
+ ctype[0] = mtype + 1; /* bias for zero terminated string */
- sscanf(rc+6, "%s %s %s", vht, cname, ctype);
fst_scope_name = fstReaderPushScope(xc, cname, NULL);
/* process fst_scope_name + cname vs ctype here */
- if(strcmp(ctype, "NULL") && strcmp(cname, ctype))
+ if((strcmp(ctype+1, "NULL") && strcmp(cname, ctype+1)) || (mtype != FST_ST_VCD_MODULE))
{
#ifdef _WAVE_HAVE_JUDY
PPValue = JudySLIns(&PJArray, (uint8_t *)fst_scope_name, PJE0);
@@ -133,12 +245,30 @@ char sbuff[65537];
FILE *extload;
void *xc = fstReaderOpenForUtilitiesOnly();
-sprintf(sbuff, "%s -scope %s 2>&1", EXTLOAD_PATH, fname);
+sprintf(sbuff, "%s -info %s 2>&1", EXTLOAD_PATH, fname);
extload = popen(sbuff, "r");
+if(extload)
+ {
+ while(get_info(extload));
+ pclose(extload);
+ }
-while(get_scopename(xc, extload));
+if(numfacs)
+ {
+ var_direction = calloc(numfacs, sizeof(unsigned char));
+ var_direction_idx = 0;
+ }
+
+sprintf(sbuff, "%s -tree %s 2>&1", EXTLOAD_PATH, fname);
+extload = popen(sbuff, "r");
+if(extload)
+ {
+ while(get_scopename(xc, extload));
+ pclose(extload);
+ }
+
+var_direction_idx = 0;
-pclose(extload);
fstReaderClose(xc); /* corresponds to fstReaderOpenForUtilitiesOnly() */
}
@@ -398,11 +528,51 @@ while(!feof(f))
break;
case 'i':
- vartype = FST_VT_VCD_INTEGER;
+ if(!strcmp(st, "integer"))
+ {
+ vartype = FST_VT_VCD_INTEGER;
+ }
+ else
+ if(!strcmp(st, "int"))
+ {
+ vartype = FST_VT_SV_INT;
+ }
break;
case 'e':
- vartype = FST_VT_VCD_EVENT;
+ if(!strcmp(st, "event"))
+ {
+ vartype = FST_VT_VCD_EVENT;
+ }
+ else
+ if(!strcmp(st, "enum"))
+ {
+ vartype = FST_VT_SV_ENUM;
+ }
+ break;
+
+ case 'b':
+ if(!strcmp(st, "bit"))
+ {
+ vartype = FST_VT_SV_BIT;
+ }
+ else
+ if(!strcmp(st, "byte"))
+ {
+ vartype = FST_VT_SV_BYTE;
+ }
+ break;
+
+ case 'l':
+ if(!strcmp(st, "logic"))
+ {
+ vartype = FST_VT_SV_LOGIC;
+ }
+ else
+ if(!strcmp(st, "longint"))
+ {
+ vartype = FST_VT_SV_LONGINT;
+ }
break;
case 's':
@@ -420,6 +590,21 @@ while(!feof(f))
{
vartype = FST_VT_GEN_STRING;
}
+ else
+ if(!strcmp(st, "shortint"))
+ {
+ vartype = FST_VT_SV_SHORTINT;
+ }
+ else
+ if(!strcmp(st, "shortreal"))
+ {
+ vartype = FST_VT_SV_SHORTREAL;
+ }
+ else
+ if(!strcmp(st, "sparray"))
+ {
+ vartype = FST_VT_VCD_SPARRAY;
+ }
break;
case 't':
@@ -506,14 +691,25 @@ while(!feof(f))
if(!node)
{
Jval val;
- returnedhandle = fstWriterCreateVar(ctx, vartype, FST_VD_IMPLICIT, len, nam, 0);
+ returnedhandle = fstWriterCreateVar(ctx, vartype, !var_direction ? FST_VD_IMPLICIT : var_direction[var_direction_idx++], len, nam, 0);
val.i = returnedhandle;
jrb_insert_int(vcd_ids, hash, val)->val2.i = len;
}
else
{
- fstWriterCreateVar(ctx, vartype, FST_VD_IMPLICIT, node->val2.i, nam, node->val.i);
+ fstWriterCreateVar(ctx, vartype, !var_direction ? FST_VD_IMPLICIT : var_direction[var_direction_idx++], node->val2.i, nam, node->val.i);
}
+
+#if defined(VCD2FST_EXTLOAD_CONV)
+ if(var_direction)
+ {
+ if(var_direction_idx == numfacs)
+ {
+ free(var_direction);
+ var_direction = NULL;
+ }
+ }
+#endif
}
}
else
@@ -547,6 +743,41 @@ while(!feof(f))
scopetype = FST_ST_VCD_FORK;
}
else
+ if(!strcmp(st, "generate"))
+ {
+ scopetype = FST_ST_VCD_GENERATE;
+ }
+ else
+ if(!strcmp(st, "struct"))
+ {
+ scopetype = FST_ST_VCD_STRUCT;
+ }
+ else
+ if(!strcmp(st, "union"))
+ {
+ scopetype = FST_ST_VCD_UNION;
+ }
+ else
+ if(!strcmp(st, "class"))
+ {
+ scopetype = FST_ST_VCD_CLASS;
+ }
+ else
+ if(!strcmp(st, "interface"))
+ {
+ scopetype = FST_ST_VCD_INTERFACE;
+ }
+ else
+ if(!strcmp(st, "package"))
+ {
+ scopetype = FST_ST_VCD_PACKAGE;
+ }
+ else
+ if(!strcmp(st, "program"))
+ {
+ scopetype = FST_ST_VCD_PROGRAM;
+ }
+ else
{
scopetype = FST_ST_VCD_MODULE;
}
@@ -557,22 +788,58 @@ while(!feof(f))
#ifdef _WAVE_HAVE_JUDY
if(PJArray)
{
- const char *fst_scope_name = fstReaderPushScope(xc, st, NULL);
- PPvoid_t PPValue = JudySLGet(PJArray, (uint8_t *)fst_scope_name, PJE0);
+ const char *fst_scope_name2 = fstReaderPushScope(xc, st, NULL);
+ PPvoid_t PPValue = JudySLGet(PJArray, (uint8_t *)fst_scope_name2, PJE0);
+
+ if(PPValue)
+ {
+ unsigned char st_replace = (*((unsigned char *)*PPValue)) - 1;
+ if(st_replace != FST_ST_VCD_MODULE)
+ {
+ scopetype = st_replace;
+ }
- fstWriterSetScope(ctx, scopetype, st, PPValue ? *PPValue : NULL);
+ if((scopetype == FST_ST_VCD_GENERATE)||(scopetype == FST_ST_VCD_STRUCT))
+ {
+ PPValue = NULL;
+ }
+
+ fstWriterSetScope(ctx, scopetype, st, PPValue ? ((char *)(*PPValue)+1) : NULL);
+ }
+ else
+ {
+ fstWriterSetScope(ctx, scopetype, st, NULL);
+ }
}
#else
if(comp_name_jrb)
{
- const char *fst_scope_name = fstReaderPushScope(xc, st, NULL);
+ const char *fst_scope_name2 = fstReaderPushScope(xc, st, NULL);
char cstring[65537];
JRB str;
- strcpy(cstring, fst_scope_name);
+ strcpy(cstring, fst_scope_name2);
str = jrb_find_str(comp_name_jrb, cstring);
- fstWriterSetScope(ctx, scopetype, st, str ? str->val.s : NULL);
+ if(str)
+ {
+ unsigned char st_replace = str->val.s[0] - 1;
+ if(st_replace != FST_ST_VCD_MODULE)
+ {
+ scopetype = st_replace;
+ }
+
+ if((scopetype == FST_ST_VCD_GENERATE)||(scopetype == FST_ST_VCD_STRUCT))
+ {
+ str = NULL;
+ }
+
+ fstWriterSetScope(ctx, scopetype, st, str ? (str->val.s+1) : NULL);
+ }
+ else
+ {
+ fstWriterSetScope(ctx, scopetype, st, NULL);
+ }
}
#endif
else
@@ -744,9 +1011,10 @@ while(!feof(f))
fstWriterSetDate(ctx, pnt);
}
else
- if(!strncmp(buf, "$version", 8))
+ if((!strncmp(buf, "$version", 8)) || (!strncmp(buf, "$comment", 8)))
{
char *pnt, *crpnt, *rsp;
+ int is_version = (buf[1] == 'v');
if((pnt = strstr(buf, "$end")))
{
@@ -781,7 +1049,15 @@ while(!feof(f))
if(crpnt) *crpnt = 0;
crpnt = strchr(pnt, '\r');
if(crpnt) *crpnt = 0;
- fstWriterSetVersion(ctx, pnt);
+
+ if(is_version)
+ {
+ fstWriterSetVersion(ctx, pnt);
+ }
+ else
+ {
+ fstWriterSetComment(ctx, pnt);
+ }
}
}
@@ -1282,6 +1558,10 @@ if (optind < argc)
lxname = malloc(strlen(argv[optind])+1);
strcpy(lxname, argv[optind++]);
}
+ else
+ {
+ break;
+ }
}
}
diff --git a/src/helpers/vcd2lxt2.c b/src/helpers/vcd2lxt2.c
index 751115a..a080c5f 100644
--- a/src/helpers/vcd2lxt2.c
+++ b/src/helpers/vcd2lxt2.c
@@ -2006,6 +2006,10 @@ if (optind < argc)
lxname = malloc_2(strlen(argv[optind])+1);
strcpy(lxname, argv[optind++]);
}
+ else
+ {
+ break;
+ }
}
}
diff --git a/src/helpers/vcd2vzt.c b/src/helpers/vcd2vzt.c
index 8940903..975bea6 100644
--- a/src/helpers/vcd2vzt.c
+++ b/src/helpers/vcd2vzt.c
@@ -2013,6 +2013,10 @@ if (optind < argc)
lxname = malloc_2(strlen(argv[optind])+1);
strcpy(lxname, argv[optind++]);
}
+ else
+ {
+ break;
+ }
}
}
diff --git a/src/helpers/vzt2vcd.c b/src/helpers/vzt2vcd.c
index fb4c950..b182a54 100644
--- a/src/helpers/vzt2vcd.c
+++ b/src/helpers/vzt2vcd.c
@@ -436,6 +436,10 @@ if (optind < argc)
lxname = malloc(strlen(argv[optind])+1);
strcpy(lxname, argv[optind++]);
}
+ else
+ {
+ break;
+ }
}
}
diff --git a/src/libbz2/Makefile.in b/src/libbz2/Makefile.in
index f8a1345..3c9f7a6 100644
--- a/src/libbz2/Makefile.in
+++ b/src/libbz2/Makefile.in
@@ -145,6 +145,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -158,6 +161,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -229,6 +234,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/src/liblzma/Makefile.in b/src/liblzma/Makefile.in
index 549db79..4666283 100644
--- a/src/liblzma/Makefile.in
+++ b/src/liblzma/Makefile.in
@@ -143,6 +143,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -156,6 +159,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -227,6 +232,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/src/libz/Makefile.in b/src/libz/Makefile.in
index 75d1353..c15103e 100644
--- a/src/libz/Makefile.in
+++ b/src/libz/Makefile.in
@@ -148,6 +148,9 @@ COCOA_GTK_LDADD = @COCOA_GTK_LDADD@
COCOA_GTK_LDFLAGS = @COCOA_GTK_LDFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
@@ -161,6 +164,8 @@ EXTDEBUG2 = @EXTDEBUG2@
EXTDEBUG3 = @EXTDEBUG3@
EXTLOAD_CFLAGS = @EXTLOAD_CFLAGS@
FASTTREE_CFLAGS = @FASTTREE_CFLAGS@
+FSDB_CFLAGS = @FSDB_CFLAGS@
+FSDB_LDADD = @FSDB_LDADD@
GCONF_CFLAGS = @GCONF_CFLAGS@
GCONF_LIBS = @GCONF_LIBS@
GPERF = @GPERF@
@@ -232,6 +237,7 @@ abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
diff --git a/src/lx2.c b/src/lx2.c
index 58ba0cf..aad6697 100644
--- a/src/lx2.c
+++ b/src/lx2.c
@@ -550,6 +550,7 @@ switch(GLOBALS->is_lx2)
case LXT2_IS_VZT: import_vzt_trace(np); return;
case LXT2_IS_VLIST: import_vcd_trace(np); return;
case LXT2_IS_FST: import_fst_trace(np); return;
+ case LXT2_IS_FSDB: import_extload_trace(np); return;
default: break; /* fallthrough */
}
@@ -677,6 +678,7 @@ switch(GLOBALS->is_lx2)
case LXT2_IS_VZT: vzt_set_fac_process_mask(np); return;
case LXT2_IS_VLIST: vcd_set_fac_process_mask(np); return;
case LXT2_IS_FST: fst_set_fac_process_mask(np); return;
+ case LXT2_IS_FSDB: fsdb_set_fac_process_mask(np); return;
default: break; /* fallthrough */
}
@@ -712,6 +714,7 @@ switch(GLOBALS->is_lx2)
case LXT2_IS_VZT: vzt_import_masked(); return;
case LXT2_IS_VLIST: vcd_import_masked(); return;
case LXT2_IS_FST: fst_import_masked(); return;
+ case LXT2_IS_FSDB: fsdb_import_masked(); return;
default: break; /* fallthrough */
}
diff --git a/src/lx2.h b/src/lx2.h
index 8bd3e91..f7f644c 100644
--- a/src/lx2.h
+++ b/src/lx2.h
@@ -21,7 +21,7 @@
#define F_NAME_MODULUS (3)
-enum LXT2_Loader_Type_Encodings { LXT2_IS_INACTIVE, LXT2_IS_LXT2, LXT2_IS_VZT, LXT2_IS_AET2, LXT2_IS_VLIST, LXT2_IS_FST };
+enum LXT2_Loader_Type_Encodings { LXT2_IS_INACTIVE, LXT2_IS_LXT2, LXT2_IS_VZT, LXT2_IS_AET2, LXT2_IS_VLIST, LXT2_IS_FST, LXT2_IS_FSDB };
#ifdef WAVE_USE_STRUCT_PACKING
#pragma pack(push)
diff --git a/src/main.c b/src/main.c
index 3a6ff36..17fe1bb 100644
--- a/src/main.c
+++ b/src/main.c
@@ -21,6 +21,10 @@
#include <windows.h>
#endif
+/*
+#define WAVE_CRASH_ON_GTK_WARNING
+*/
+
#include "wave_locale.h"
#if !defined _MSC_VER && !defined __MINGW32__
@@ -683,6 +687,10 @@ if(!mainwindow_already_built)
fprintf(stderr, "Could not initialize GTK! Is DISPLAY env var/xhost set?\n\n");
print_help(argv[0]);
}
+
+#ifdef WAVE_CRASH_ON_GTK_WARNING
+ g_log_set_always_fatal(G_LOG_LEVEL_CRITICAL|G_LOG_LEVEL_WARNING);
+#endif
}
#if defined(__APPLE__)
@@ -1590,6 +1598,7 @@ if((wname)||(vcd_save_handle_cached)||(is_smartsave))
case LXT2_IS_VZT: vzt_import_masked(); break;
case LXT2_IS_VLIST: vcd_import_masked(); break;
case LXT2_IS_FST: fst_import_masked(); break;
+ case LXT2_IS_FSDB: fsdb_import_masked(); break;
}
if(wave_is_compressed)
@@ -2238,7 +2247,7 @@ if(GLOBALS->treeopen_chain_head)
{
if(GLOBALS->ctree_main)
{
- force_open_tree_node(t->str);
+ force_open_tree_node(t->str, 0);
}
t2 = t->next;
diff --git a/src/menu.c b/src/menu.c
index 83589fb..63f0900 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -3718,6 +3718,12 @@ for(i=0;i<26;i++)
GLOBALS->named_markers[i]=-1;
dirty=1;
}
+
+ if(GLOBALS->marker_names[i])
+ {
+ free_2(GLOBALS->marker_names[i]);
+ GLOBALS->marker_names[i] = NULL;
+ }
}
if(dirty)
@@ -3752,6 +3758,13 @@ if(GLOBALS->tims.marker!=-1)
GLOBALS->named_markers[i]=-1;
signalarea_configure_event(GLOBALS->signalarea, NULL);
wavearea_configure_event(GLOBALS->wavearea, NULL);
+
+ if(GLOBALS->marker_names[i])
+ {
+ free_2(GLOBALS->marker_names[i]);
+ GLOBALS->marker_names[i] = NULL;
+ }
+
/* return; */
}
}
@@ -4994,6 +5007,105 @@ if(GLOBALS->helpbox_is_active)
colorformat(WAVE_COLOR_CYCLE);
}
/**/
+
+void
+menu_open_hierarchy(gpointer null_data, guint callback_action, GtkWidget *widget)
+{
+Trptr t;
+int fix=0;
+
+if(GLOBALS->helpbox_is_active)
+ {
+ help_text_bold("\n\nOpen Hierarchy");
+ help_text(
+#if WAVE_USE_GTK2
+ " opens and selects the appropriate level of hierarchy in the SST"
+ " for the first selected signal."
+#else
+ " is not available with this build. Please build against GTK 2."
+#endif
+ );
+ return;
+ }
+
+#if WAVE_USE_GTK2
+
+if((t=GLOBALS->traces.first))
+ {
+ while(t)
+ {
+ if(IsSelected(t)&&!IsShadowed(t))
+ {
+ char *tname = NULL;
+
+ if (HasAlias(t))
+ {
+ tname = strdup_2(t->name_full);
+ }
+ else if(t->vector==TRUE)
+ {
+ tname = strdup_2(t->n.vec->bvname);
+ }
+ else
+ {
+ int flagged = HIER_DEPACK_ALLOC;
+
+ tname = hier_decompress_flagged(t->n.nd->nname, &flagged);
+ if(!flagged)
+ {
+ tname = strdup_2(tname);
+ }
+ }
+
+ if(tname)
+ {
+ char *lasthier = strrchr(tname, GLOBALS->hier_delimeter);
+ if(lasthier)
+ {
+ char *tname_copy;
+
+ lasthier++; /* zero out character after hierarchy */
+ *lasthier = 0;
+ tname_copy = strdup_2(tname); /* force_open_tree_node() is destructive */
+ if(!force_open_tree_node(tname_copy, 1))
+ {
+ if(GLOBALS->selected_hierarchy_name)
+ {
+ free_2(GLOBALS->selected_hierarchy_name);
+ GLOBALS->selected_hierarchy_name = strdup_2(tname);
+ }
+
+ select_tree_node(tname);
+ }
+ free_2(tname_copy);
+ }
+
+ free_2(tname);
+ fix=1;
+ break;
+ }
+ }
+
+ t=t->t_next;
+ }
+
+ if(fix)
+ {
+ GLOBALS->signalwindow_width_dirty=1;
+ MaxSignalLength();
+ signalarea_configure_event(GLOBALS->signalarea, NULL);
+ wavearea_configure_event(GLOBALS->wavearea, NULL);
+ }
+
+ }
+
+#endif
+}
+
+
+/**/
+
+
static void dataformat(int mask, int patch)
{
Trptr t;
@@ -6130,6 +6242,8 @@ static gtkwave_mlist_t menu_items[] =
WAVE_GTKIFE("/Search/Signal Search Hierarchy", "<Alt>T", menu_hiersearch, WV_MENU_SSH, "<Item>"),
WAVE_GTKIFE("/Search/Signal Search Tree", "<Shift><Alt>T", menu_treesearch, WV_MENU_SST, "<Item>"),
WAVE_GTKIFE("/Search/<separator>", NULL, NULL, WV_MENU_SEP7, "<Separator>"),
+ WAVE_GTKIFE("/Search/Open Hierarchy", NULL, menu_open_hierarchy, WV_MENU_OPENH, "<Item>"),
+ WAVE_GTKIFE("/Search/<separator>", NULL, NULL, WV_MENU_SEP7D, "<Separator>"),
WAVE_GTKIFE("/Search/Autocoalesce", NULL, menu_autocoalesce, WV_MENU_ACOL, "<ToggleItem>"),
WAVE_GTKIFE("/Search/Autocoalesce Reversal", NULL, menu_autocoalesce_reversal, WV_MENU_ACOLR, "<ToggleItem>"),
WAVE_GTKIFE("/Search/Autoname Bundles", NULL, menu_autoname_bundles_on, WV_MENU_ABON, "<ToggleItem>"),
@@ -6753,7 +6867,9 @@ static gtkwave_mlist_t popmenu_items[] =
WAVE_GTKIFE("/<separator>", NULL, NULL, WV_MENU_SEP3, "<Separator>"),
WAVE_GTKIFE("/Cut", NULL, menu_cut_traces, WV_MENU_EC, "<Item>"),
WAVE_GTKIFE("/Copy", NULL, menu_copy_traces, WV_MENU_ECY, "<Item>"),
- WAVE_GTKIFE("/Paste", NULL, menu_paste_traces, WV_MENU_EP, "<Item>")
+ WAVE_GTKIFE("/Paste", NULL, menu_paste_traces, WV_MENU_EP, "<Item>"),
+ WAVE_GTKIFE("/<separator>", NULL, NULL, WV_MENU_SEP4, "<Separator>"),
+ WAVE_GTKIFE("/Open Hierarchy", NULL, menu_open_hierarchy, WV_MENU_OPENH, "<Item>")
};
diff --git a/src/menu.h b/src/menu.h
index c5f5cff..5d5e4d0 100644
--- a/src/menu.h
+++ b/src/menu.h
@@ -200,6 +200,8 @@ WV_MENU_SSR,
WV_MENU_SSH,
WV_MENU_SST,
WV_MENU_SEP7,
+WV_MENU_OPENH,
+WV_MENU_SEP7D,
WV_MENU_ACOL,
WV_MENU_ACOLR,
WV_MENU_ABON,
diff --git a/src/pixmaps.c b/src/pixmaps.c
index 1daf631..767c6e2 100644
--- a/src/pixmaps.c
+++ b/src/pixmaps.c
@@ -2305,6 +2305,600 @@ static char *arrow_divide[] = {
/* XPM */
+static char *arrow_inout[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 109 2",
+" c #418A3E",
+". c #428B3F",
+"X c #428C3F",
+"o c #438D40",
+"O c #448D40",
+"+ c #458E41",
+"@ c #458F41",
+"# c #469042",
+"$ c #479143",
+"% c #499244",
+"& c #499445",
+"* c #4A9545",
+"= c #4B9646",
+"- c #4C9747",
+"; c #4E974A",
+": c #4D9948",
+"> c #4E9948",
+", c #4F9B4A",
+"< c #509C4A",
+"1 c #519E4B",
+"2 c #529F4C",
+"3 c #5A9C56",
+"4 c #5B9E57",
+"5 c #54A14E",
+"6 c #55A24E",
+"7 c #56A34F",
+"8 c #57A450",
+"9 c #57A550",
+"0 c #58A551",
+"q c #58A651",
+"w c #59A752",
+"e c #5AA852",
+"r c #5AA853",
+"t c #5BA953",
+"y c #5BAA54",
+"u c #5CAA54",
+"i c #5CAB54",
+"p c #5DAB55",
+"a c #5EAA57",
+"s c #5DAC55",
+"d c #5EAD56",
+"f c #5FAD56",
+"g c #5FAE57",
+"h c #5EA15A",
+"j c #60A15C",
+"k c #62A45F",
+"l c #60AF58",
+"z c #61B058",
+"x c #61B159",
+"c c #62B159",
+"v c #62B259",
+"b c #63B35A",
+"n c #64B35A",
+"m c #64B25B",
+"M c #64B45B",
+"N c #64B05C",
+"B c #66B65C",
+"V c #67B75D",
+"C c #68B95E",
+"Z c #69B95F",
+"A c #68A963",
+"S c #6DB167",
+"D c #6ABB60",
+"F c #6BBC60",
+"G c #6CBD61",
+"H c #6CBE62",
+"J c #6DBF62",
+"K c #6DBF63",
+"L c #6EB168",
+"P c #6FB369",
+"I c #77B96F",
+"U c #75B071",
+"Y c #77B373",
+"T c #79B374",
+"R c #77B871",
+"E c #78BB70",
+"W c #79BB71",
+"Q c #79B972",
+"! c #7ABA73",
+"~ c #7BB874",
+"^ c #7EB679",
+"/ c #6EC063",
+"( c #70C365",
+") c #71C365",
+"_ c #72C466",
+"` c #72C566",
+"' c #72C467",
+"] c #73C667",
+"[ c #73C269",
+"{ c #74C768",
+"} c #85BF7D",
+"| c #87CA7E",
+" . c #86BD80",
+".. c #89BF83",
+"X. c #8AC184",
+"o. c #8BC186",
+"O. c #8DC387",
+"+. c #8ACD80",
+"@. c #8BCE81",
+"#. c #8CCC83",
+"$. c #90CF86",
+"%. c #92C68C",
+"&. c #93C78C",
+"*. c #94C78D",
+"=. c #98CD8E",
+"-. c #9FD197",
+";. c #A0D098",
+":. c #A7D69E",
+">. c None",
+/* pixels */
+"{ { ] ] ( >.>.>.>.>.>.B M c l d ",
+"{ @.$.( >.K >.>.>.>.B >.n W R u ",
+"] @.:.#.[ K >.>.>.>.n c W *.W r ",
+"( ( | =.-.F >.>.>.>.c &.} W 0 0 ",
+"( >.K -.-.Z >.>.>.>.g &.O.u >.8 ",
+">.K K F Z Z >.>.>.>.u t 0 0 6 >.",
+">.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.",
+">.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.",
+">.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.",
+">.>.>.>.>.>.>.>.>.>.>.>.>.>.>.>.",
+">.c c g d r >.>.>.>.1 < : ; * >.",
+"B >.c X.o.r >.>.>.>., ^ T * >.$ ",
+"l g R ~ .8 >.>.>.>., T A h % @ ",
+"d R ..L 8 6 >.>.>.>.* ; k U 4 X ",
+"d L L 9 >.5 >.>.>.>.* >.@ h 3 X ",
+"0 9 8 6 1 >.>.>.>.>.>.@ @ @ X "
+};
+
+
+/* XPM */
+static char *application[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 90 1",
+" c #5171A9",
+". c #5172A9",
+"X c #5373A9",
+"o c #5373AA",
+"O c #5475AB",
+"+ c #5475AC",
+"@ c #5676AD",
+"# c #5779AE",
+"$ c #587AB0",
+"% c #587BB1",
+"& c #5A7CB2",
+"* c #5C7EB4",
+"= c #5C7EB5",
+"- c #5E81B7",
+"; c #5F83B9",
+": c #6085BA",
+"> c #6185BB",
+", c #6387BD",
+"< c #6488BE",
+"1 c #668BC0",
+"2 c #688EC3",
+"3 c #6F90C1",
+"4 c #6C92C8",
+"5 c #6C94C9",
+"6 c #6E94CA",
+"7 c #6F96CB",
+"8 c #6F97CC",
+"9 c #7A9AC4",
+"0 c #7099CE",
+"q c #729ACF",
+"w c #739CD1",
+"e c #739DD2",
+"r c #759ED4",
+"t c #76A0D5",
+"y c #79A2D8",
+"u c #79A3D9",
+"i c #7AA4DA",
+"p c #7AA4DB",
+"a c #7AA6DC",
+"s c #7BA7DC",
+"d c #85ACDD",
+"f c #8DB1DD",
+"g c #92B9E8",
+"h c #DEE7F2",
+"j c #E4EAF3",
+"k c #E7EBF5",
+"l c #E8ECF6",
+"z c #EAEFF6",
+"x c #EAF0F7",
+"c c #EBF2F7",
+"v c #EDF3F7",
+"b c #ECF2F8",
+"n c #EFF3FA",
+"m c #EEF4F8",
+"M c #F0F5F9",
+"N c #F2F5FB",
+"B c #F1F6FB",
+"V c #F2F7FA",
+"C c #F2F7FB",
+"Z c #F3F7FB",
+"A c #F4F7FB",
+"S c #F4F8FB",
+"D c #F5F8FB",
+"F c #F5F9FB",
+"G c #F7F9FB",
+"H c #F6FAFB",
+"J c #F7FAFB",
+"K c #F6FBFB",
+"L c #F7FBFC",
+"P c #F7FCFC",
+"I c #F9FBFB",
+"U c #F8FBFC",
+"Y c #F9FBFC",
+"T c #F8FCFC",
+"R c #F9FCFC",
+"E c #F8FDFD",
+"W c #F9FDFD",
+"Q c #FAFCFC",
+"! c #FAFDFD",
+"~ c #FBFDFD",
+"^ c #FAFEFE",
+"/ c #FBFEFE",
+"( c #FCFDFD",
+") c #FCFEFE",
+"_ c #FDFEFE",
+"` c #FCFFFF",
+"' c #FDFFFF",
+"] c #FEFFFF",
+"[ c #FFFFFF",
+"{ c None",
+/* pixels */
+"{{{{{{{{{{{{{{{{",
+"{faaputreqq759{{",
+"dggggggggggggg3{",
+"sssssssaassssa1{",
+"p[[[[[[[[[[[[[,{",
+"u[UUGASmvzjjh[:{",
+"u[!IUGGSBmbxl[-{",
+"t[[I!!GSGBAbb[={",
+"r[!![!!PGGSCC[&{",
+"e[[[!!!!PIHPC[${",
+"8[!![!!!!!!PG[+{",
+"5[[[[[[!![!!![o{",
+"4[[[[[[[[[[[[[ {",
+"o21,,;*&$#+Oooo{",
+"{{{{{{{{{{{{{{{{",
+"{{{{{{{{{{{{{{{{"
+};
+
+
+/* XPM */
+static char *package[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 176 2",
+" c #C38322",
+". c #C38423",
+"X c #C48524",
+"o c #C48625",
+"O c #C58726",
+"+ c #C58928",
+"@ c #C68A28",
+"# c #C78D2B",
+"$ c #C88E2C",
+"% c #C88F2D",
+"& c #C9902E",
+"* c #C9922F",
+"= c #CB9532",
+"- c #CC9834",
+"; c #C8943B",
+": c #CE9D39",
+"> c #DE9F32",
+", c #D1A43F",
+"< c #E2AA37",
+"1 c #E2A938",
+"2 c #E3AB3A",
+"3 c #E6B53A",
+"4 c #E6B43D",
+"5 c #E6B53F",
+"6 c #ECB638",
+"7 c #E9B53D",
+"8 c #F0BD3B",
+"9 c #C88E40",
+"0 c #CA904A",
+"q c #D09753",
+"w c #D2A540",
+"e c #D3A842",
+"r c #D4AA44",
+"t c #D5AC45",
+"y c #D5AD47",
+"u c #D6B049",
+"i c #D7B04A",
+"p c #D7B24B",
+"a c #D8B24B",
+"s c #D8B44C",
+"d c #D8B44D",
+"f c #D9B54D",
+"g c #D9B54E",
+"h c #D9B74F",
+"j c #D5A651",
+"k c #DAAD50",
+"l c #D7A45F",
+"z c #DBB156",
+"x c #E1A740",
+"c c #E6B542",
+"v c #E4B145",
+"b c #E6B147",
+"n c #E7BA41",
+"m c #E9BD40",
+"M c #E8BE43",
+"N c #E9BD45",
+"B c #E4B14C",
+"V c #E9B44C",
+"C c #E8BF48",
+"Z c #E8BB4F",
+"A c #F5BD40",
+"S c #E5AF56",
+"D c #DBB262",
+"F c #DDB969",
+"G c #D6B870",
+"H c #DCBD77",
+"J c #E6B66B",
+"K c #E2B76F",
+"L c #E5BF6F",
+"P c #E4B374",
+"I c #EAC443",
+"U c #EAC146",
+"Y c #ECC547",
+"T c #EBC648",
+"R c #EFC748",
+"E c #F9C248",
+"W c #F9C448",
+"Q c #F1C156",
+"! c #F5C969",
+"~ c #E1C072",
+"^ c #E0C07D",
+"/ c #E0C67E",
+"( c #F5CF7F",
+") c #FFD577",
+"_ c #F5D078",
+"` c #F5D07F",
+"' c #FED678",
+"] c #FED97C",
+"[ c #DBC389",
+"{ c #DEC995",
+"} c #E5C482",
+"| c #EBC182",
+" . c #ECC583",
+".. c #EEC483",
+"X. c #EDC687",
+"o. c #ECCA84",
+"O. c #EBCC84",
+"+. c #E7CC88",
+"@. c #EECA88",
+"#. c #EFCA8A",
+"$. c #EBCD8F",
+"%. c #F1CF86",
+"&. c #F0CE8A",
+"*. c #FBDC84",
+"=. c #F1D28B",
+"-. c #F7D589",
+";. c #F7D78B",
+":. c #F0D08C",
+">. c #FBDA8D",
+",. c #FFDC8C",
+"<. c #E5CF92",
+"1. c #EDD292",
+"2. c #EAD59C",
+"3. c #F1D590",
+"4. c #F5D790",
+"5. c #F2D695",
+"6. c #FBDB92",
+"7. c #FEDF95",
+"8. c #F8DB9D",
+"9. c #FEE094",
+"0. c #FEE194",
+"q. c #FEE196",
+"w. c #FFE19B",
+"e. c #FFE39F",
+"r. c #EDD9A5",
+"t. c #F2DDAF",
+"y. c #EDDEBE",
+"u. c #FFE4A4",
+"i. c #FFE4A5",
+"p. c #FFE5A5",
+"a. c #F9E1AA",
+"s. c #FAE3AA",
+"d. c #FFE7AD",
+"f. c #FFE8A8",
+"g. c #FFE8AB",
+"h. c #F7E4B2",
+"j. c #FAE4B0",
+"k. c #FFEAB3",
+"l. c #FFE9B6",
+"z. c #FFEBB7",
+"x. c #F6E5BF",
+"c. c #FFEAB9",
+"v. c #FFEBBA",
+"b. c #FFEBBD",
+"n. c #FFEDBE",
+"m. c #FFEEC1",
+"M. c #FFEFC1",
+"N. c #FFEFC4",
+"B. c #FCEEC7",
+"V. c #FBEDCB",
+"C. c #FFEFC8",
+"Z. c #F9EBCD",
+"A. c #FAECCE",
+"S. c #FFF0C9",
+"D. c #FFF2CC",
+"F. c #FFF2CE",
+"G. c #FFF4CC",
+"H. c #F5EBD2",
+"J. c #F7EED1",
+"K. c #FFF3D4",
+"L. c #FFF3D5",
+"P. c #FFF4D7",
+"I. c #FFF5D9",
+"U. c #FFF4DA",
+"Y. c #FFF6DB",
+"T. c #FFF6DD",
+"R. c #FCF6E2",
+"E. c #FDF6E2",
+"W. c #FEF6E3",
+"Q. c #FEF8E1",
+"!. c #FDF8E2",
+"~. c #FCF8E6",
+"^. c #FEFBE7",
+"/. c #FFFEF0",
+"(. c #FFFFF6",
+"). c None",
+/* pixels */
+").).).).).).).a p ).).).).).).).",
+").).).).).g p 2.+.r r ).).).).).",
+").).).).g <.~.R.t.j.~ w ).).).).",
+").).g / J.(./.V.k ;.a.5.D : ).).",
+"g g r.H.y.{ [ G F 4.( 8.a.o.j = ",
+"g Q.A.1.O.L z ; A.I.c.7.' p.*.* ",
+"p R.K.s.&.` _ B j.l.w.' A 7 3.% ",
+"p R.I.K.b.-.! V >.,.W 6 C Z :.# ",
+"y R.P.D.N.c.6.Q E 8 R N c b #.+ ",
+"r R.K.D.m.k.d.] R I M 4 1 x .O ",
+"e ~.T.M.l.g.u.q.T m 4 1 > J .o ",
+", H x.T.m.p.e.q.U 3 < S .P 0 ",
+").).: ^ B.D.p.q.n v #.| q . ).).",
+").).).- = } G.N.:.&.l o o ).).).",
+").).).).).* % $.K 9 o ).).).).).",
+").).).).).).).+ O ).).).).).).)."
+};
+
+
+/* XPM */
+static char *plugin[] = {
+/* columns rows colors chars-per-pixel */
+"16 16 123 2",
+" c #3A8A36",
+". c #3D8C39",
+"X c #3D8D39",
+"o c #3F8E3A",
+"O c #408F3B",
+"+ c #41903C",
+"@ c #42913D",
+"# c #42923E",
+"$ c #43923E",
+"% c #459440",
+"& c #469641",
+"* c #479642",
+"= c #4A9945",
+"- c #4D9C48",
+"; c #4E9D48",
+": c #4F9E49",
+"> c #51A04B",
+", c #52A14C",
+"< c #55A44F",
+"1 c #59B54F",
+"2 c #59A752",
+"3 c #5AA953",
+"4 c #5DAB56",
+"5 c #5EAD57",
+"6 c #5BB651",
+"7 c #5DB752",
+"8 c #5FB853",
+"9 c #61AF5A",
+"0 c #62AC5C",
+"q c #63AD5D",
+"w c #60B955",
+"e c #61B956",
+"r c #61BA56",
+"t c #63B15B",
+"y c #65B45E",
+"u c #67B55F",
+"i c #63BA58",
+"p c #64BB58",
+"a c #64BB59",
+"s c #66BB5A",
+"d c #66BB5D",
+"f c #68BC5B",
+"g c #69BC5D",
+"h c #69BD5D",
+"j c #6ABD5E",
+"k c #6CBE5F",
+"l c #6CB565",
+"z c #6DB566",
+"x c #6AB862",
+"c c #6BB963",
+"v c #6BBD62",
+"b c #6DBF60",
+"n c #6EBC65",
+"m c #6FBF65",
+"M c #6FBD66",
+"N c #6FC062",
+"B c #71C164",
+"V c #72C165",
+"C c #73C265",
+"Z c #71C066",
+"A c #73C267",
+"S c #72C069",
+"D c #72C169",
+"F c #77C369",
+"G c #76C46D",
+"H c #77C46D",
+"J c #78C66F",
+"K c #7AC072",
+"L c #7AC770",
+"P c #7CC376",
+"I c #7BC971",
+"U c #7CC972",
+"Y c #7DCA73",
+"T c #7DCB73",
+"R c #7ECB74",
+"E c #80CD75",
+"W c #80CE76",
+"Q c #81CE76",
+"! c #81C67A",
+"~ c #81C67B",
+"^ c #83C77C",
+"/ c #87CB79",
+"( c #82CD78",
+") c #82CF78",
+"_ c #85C97C",
+"` c #84C87E",
+"' c #85C87E",
+"] c #83D079",
+"[ c #87CA80",
+"{ c #88CA80",
+"} c #88CA81",
+"| c #89CA82",
+" . c #89CA83",
+".. c #8ACB83",
+"X. c #8BCC83",
+"o. c #8CCC84",
+"O. c #8DCD85",
+"+. c #8ECD86",
+"@. c #90CF88",
+"#. c #91CF88",
+"$. c #92CF8A",
+"%. c #93CF8B",
+"&. c #94CF8A",
+"*. c #94CF8B",
+"=. c #95CF8B",
+"-. c #95D08C",
+";. c #96D18D",
+":. c #97D28D",
+">. c #98D18F",
+",. c #99D290",
+"<. c #9CD493",
+"1. c #9DD593",
+"2. c #9ED595",
+"3. c #A1D796",
+"4. c #A1D797",
+"5. c #A2D897",
+"6. c #A2D798",
+"7. c #A2D898",
+"8. c #A3D899",
+"9. c #A4D899",
+"0. c #A6D99B",
+"q. c #A7D99C",
+"w. c None",
+/* pixels */
+"w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.",
+"w.w.w.w.w.( W T L w.w.w.w.w.w.w.",
+"w.w.w.w.w.( q.5.H w.w.w.w.w.w.w.",
+"w.w.w.w.w.T 5.>.S w.w.w.w.w.w.w.",
+"w.] W W T H 4.1.n x u t w.w.w.w.",
+"w.W 9.9.4.4.1.<.>.-.*.5 w.w.w.w.",
+"w.T 8.4./ F C B V V *.3 w.w.w.w.",
+"w.L H _ <.V m k j s @.z , ; = w.",
+"w.w.w.M ,.k j s a r n X. .[ & w.",
+"w.w.w.x ;.j s s 8 7 v [ _ [ # w.",
+"w.n x K @.s r 7 6 6 _ 0 % # o w.",
+"w.x *.-.S O.O.X. .d [ % w.w.w.w.",
+"w.y @.r O.z > ; q ~ ~ o w.w.w.w.",
+"w.t O.o. ., w.w.& ~ P o w.w.w.w.",
+"w.4 2 < , - w.w.$ O o w.w.w.w.",
+"w.w.w.w.w.w.w.w.w.w.w.w.w.w.w.w."
+};
+
+
+/* XPM */
static char *arrow_rotate_clockwise[] = {
/* columns rows colors chars-per-pixel */
"16 16 97 2",
@@ -3986,6 +4580,16 @@ GLOBALS->hiericon_begin_pixmap=gdk_pixmap_create_from_xpm_d(window->window, &GLO
GLOBALS->hiericon_fork_pixmap=gdk_pixmap_create_from_xpm_d(window->window, &GLOBALS->hiericon_fork_mask,
&style->bg[GTK_STATE_NORMAL], (gchar **)arrow_divide);
+/* SV */
+GLOBALS->hiericon_interface_pixmap=gdk_pixmap_create_from_xpm_d(window->window, &GLOBALS->hiericon_interface_mask,
+ &style->bg[GTK_STATE_NORMAL], (gchar **)arrow_inout);
+GLOBALS->hiericon_svpackage_pixmap=gdk_pixmap_create_from_xpm_d(window->window, &GLOBALS->hiericon_svpackage_mask,
+ &style->bg[GTK_STATE_NORMAL], (gchar **)package);
+GLOBALS->hiericon_program_pixmap=gdk_pixmap_create_from_xpm_d(window->window, &GLOBALS->hiericon_program_mask,
+ &style->bg[GTK_STATE_NORMAL], (gchar **)application);
+GLOBALS->hiericon_class_pixmap=gdk_pixmap_create_from_xpm_d(window->window, &GLOBALS->hiericon_class_mask,
+ &style->bg[GTK_STATE_NORMAL], (gchar **)plugin);
+
/* VHDL */
GLOBALS->hiericon_design_pixmap=gdk_pixmap_create_from_xpm_d(window->window, &GLOBALS->hiericon_design_mask,
&style->bg[GTK_STATE_NORMAL], (gchar **)database);
diff --git a/src/savefile.c b/src/savefile.c
index 9f543ed..fe0384f 100644
--- a/src/savefile.c
+++ b/src/savefile.c
@@ -1589,7 +1589,7 @@ else if (*w2 == '[')
if(GLOBALS->ctree_main)
{
- force_open_tree_node(w);
+ force_open_tree_node(w, 0);
}
else
{
diff --git a/src/signalwindow.c b/src/signalwindow.c
index c9007f0..1e34792 100644
--- a/src/signalwindow.c
+++ b/src/signalwindow.c
@@ -729,6 +729,16 @@ if(GLOBALS->splash_fix_win_title)
wave_gtk_window_set_title(GTK_WINDOW(GLOBALS->mainwindow), GLOBALS->winname, GLOBALS->dumpfile_is_modified ? WAVE_SET_TITLE_MODIFIED: WAVE_SET_TITLE_NONE, 0);
}
+if(GLOBALS->window_entry_c_1)
+ {
+ GLOBALS->entry_raise_timer++;
+ if(GLOBALS->entry_raise_timer > 50)
+ {
+ gdk_window_raise(GLOBALS->window_entry_c_1->window);
+ GLOBALS->entry_raise_timer = 0;
+ }
+ }
+
#ifdef WAVE_USE_GTK2
#ifdef MAC_INTEGRATION
if(GLOBALS->dnd_helper_quartz)
@@ -1240,12 +1250,11 @@ if(GLOBALS->signalpixmap)
}
if (!GLOBALS->left_justify_sigs && !GLOBALS->do_resize_signals)
+ {
if (width < GLOBALS->max_signal_name_pixel_width+15)
{
int delta = GLOBALS->max_signal_name_pixel_width+15 - width;
- GtkAdjustment *hadj;
-
if(GLOBALS->signalpixmap)
{
@@ -1264,6 +1273,7 @@ if(GLOBALS->signalpixmap)
} else {
GLOBALS->right_align_active = 1;
}
+ }
GLOBALS->old_signal_fill_height= widget->allocation.height;
gdk_draw_rectangle(GLOBALS->signalpixmap, widget->style->bg_gc[GTK_STATE_PRELIGHT], TRUE, 0, 0,
diff --git a/src/status.c b/src/status.c
index 20f13df..3276b80 100644
--- a/src/status.c
+++ b/src/status.c
@@ -88,6 +88,7 @@ if(GLOBALS->is_lx2)
case LXT2_IS_AET2: status_text("AET2 loaded successfully.\n"); break;
case LXT2_IS_VZT: status_text("VZT loaded successfully.\n"); break;
case LXT2_IS_VLIST: status_text("VCD loaded successfully.\n"); break;
+ case LXT2_IS_FSDB: status_text("FSDB loaded successfully.\n"); break;
}
}
diff --git a/src/tcl_commands.c b/src/tcl_commands.c
index 10f56cc..16aae07 100644
--- a/src/tcl_commands.c
+++ b/src/tcl_commands.c
@@ -313,6 +313,7 @@ if(GLOBALS->is_lx2)
case LXT2_IS_VZT: reportString = "VZT"; break;
case LXT2_IS_VLIST:reportString = "VCD"; break;
case LXT2_IS_FST: reportString = "FST"; break;
+ case LXT2_IS_FSDB: reportString = "FSDB"; break;
}
}
diff --git a/src/tree.c b/src/tree.c
index 7a3825f..819a815 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -473,6 +473,13 @@ switch(mode)
case TREE_VCD_ST_FUNCTION: pxm = GLOBALS->hiericon_function_pixmap; msk = GLOBALS->hiericon_function_mask; break;
case TREE_VCD_ST_BEGIN: pxm = GLOBALS->hiericon_begin_pixmap; msk = GLOBALS->hiericon_begin_mask; break;
case TREE_VCD_ST_FORK: pxm = GLOBALS->hiericon_fork_pixmap; msk = GLOBALS->hiericon_fork_mask; break;
+ case TREE_VCD_ST_GENERATE: pxm = GLOBALS->hiericon_generatefor_pixmap; msk = GLOBALS->hiericon_generatefor_mask; break; /* same as TREE_VHDL_ST_GENFOR */
+ case TREE_VCD_ST_STRUCT: pxm = GLOBALS->hiericon_block_pixmap; msk = GLOBALS->hiericon_block_mask; break; /* same as TREE_VHDL_ST_BLOCK */
+ case TREE_VCD_ST_UNION: pxm = GLOBALS->hiericon_instance_pixmap; msk = GLOBALS->hiericon_instance_mask; break; /* same as TREE_VHDL_ST_INSTANCE */
+ case TREE_VCD_ST_CLASS: pxm = GLOBALS->hiericon_class_pixmap; msk = GLOBALS->hiericon_class_mask; break;
+ case TREE_VCD_ST_INTERFACE: pxm = GLOBALS->hiericon_interface_pixmap; msk = GLOBALS->hiericon_interface_mask; break;
+ case TREE_VCD_ST_PACKAGE: pxm = GLOBALS->hiericon_svpackage_pixmap; msk = GLOBALS->hiericon_svpackage_mask; break;
+ case TREE_VCD_ST_PROGRAM: pxm = GLOBALS->hiericon_program_pixmap; msk = GLOBALS->hiericon_program_mask; break;
case TREE_VHDL_ST_DESIGN: pxm = GLOBALS->hiericon_design_pixmap; msk = GLOBALS->hiericon_design_mask; break;
case TREE_VHDL_ST_BLOCK: pxm = GLOBALS->hiericon_block_pixmap; msk = GLOBALS->hiericon_block_mask; break;
diff --git a/src/tree.h b/src/tree.h
index d864391..857d155 100644
--- a/src/tree.h
+++ b/src/tree.h
@@ -54,12 +54,19 @@ enum tree_kind
/* A base (source file). Not yet implemented. */
TREE_BASE,
- /* Verilog scope types */
+ /* Verilog/SV scope types */
TREE_VCD_ST_MODULE,
TREE_VCD_ST_TASK,
TREE_VCD_ST_FUNCTION,
TREE_VCD_ST_BEGIN,
TREE_VCD_ST_FORK,
+ TREE_VCD_ST_GENERATE,
+ TREE_VCD_ST_STRUCT,
+ TREE_VCD_ST_UNION,
+ TREE_VCD_ST_CLASS,
+ TREE_VCD_ST_INTERFACE,
+ TREE_VCD_ST_PACKAGE,
+ TREE_VCD_ST_PROGRAM,
/* VHDL scope types */
TREE_VHDL_ST_DESIGN,
diff --git a/src/treesearch.h b/src/treesearch.h
index 9a2139e..54b3328 100644
--- a/src/treesearch.h
+++ b/src/treesearch.h
@@ -14,7 +14,7 @@ void treebox(char *title, GtkSignalFunc func, GtkWidget *old_window);
GtkWidget* treeboxframe(char *title, GtkSignalFunc func);
void mkmenu_treesearch_cleanup(GtkWidget *widget, gpointer data);
void dump_open_tree_nodes(FILE *wave, xl_Tree *t);
-int force_open_tree_node(char *name);
+int force_open_tree_node(char *name, int keep_path_nodes_open);
void select_tree_node(char *name);
void dnd_setup(GtkWidget *src, GtkWidget *widget, int enable_receive); /* dnd from gtk2 tree to signalwindow */
void treeview_select_all_callback(void); /* gtk2 */
diff --git a/src/treesearch_gtk2.c b/src/treesearch_gtk2.c
index 45dac19..5262bdd 100644
--- a/src/treesearch_gtk2.c
+++ b/src/treesearch_gtk2.c
@@ -24,6 +24,7 @@
#include "tcl_helper.h"
WAVE_NODEVARTYPE_STR
+WAVE_NODEVARDIR_STR
enum { VIEW_DRAG_INACTIVE, TREE_TO_VIEW_DRAG_ACTIVE, SEARCH_TO_VIEW_DRAG_ACTIVE };
@@ -41,7 +42,7 @@ enum { VIEW_DRAG_INACTIVE, TREE_TO_VIEW_DRAG_ACTIVE, SEARCH_TO_VIEW_DRAG_ACTIVE
/* The signal area is based on a tree view which requires a store model.
This store model contains the list of signals to be displayed.
*/
-enum { NAME_COLUMN, TREE_COLUMN, TYPE_COLUMN, N_COLUMNS };
+enum { NAME_COLUMN, TREE_COLUMN, TYPE_COLUMN, DIR_COLUMN, N_COLUMNS };
/* list of autocoalesced (synthesized) filter names that need to be freed at some point) */
@@ -131,6 +132,7 @@ fill_sig_store (void)
int i = t->t_which;
char *s, *tmp2;
int vartype;
+ int vardir;
int is_tname = 0;
if(i < 0) continue;
@@ -141,6 +143,12 @@ fill_sig_store (void)
vartype = 0;
}
+ vardir = GLOBALS->facs[i]->n->vardir; /* two bit already chops down to 0..3, but this doesn't hurt */
+ if((vardir < 0) || (vardir > ND_DIR_MAX))
+ {
+ vardir = 0;
+ }
+
if(!GLOBALS->facs[i]->vec_root)
{
is_tname = 1;
@@ -181,6 +189,7 @@ fill_sig_store (void)
NAME_COLUMN, s,
TREE_COLUMN, t,
TYPE_COLUMN, vartype_strings[vartype],
+ DIR_COLUMN,vardir_strings[vardir],
-1);
if(s != t->name)
@@ -199,6 +208,7 @@ fill_sig_store (void)
NAME_COLUMN, s,
TREE_COLUMN, t,
TYPE_COLUMN, vartype_strings[vartype],
+ DIR_COLUMN,vardir_strings[vardir],
-1);
}
}
@@ -254,7 +264,7 @@ if(node)
}
-int force_open_tree_node(char *name) {
+int force_open_tree_node(char *name, int keep_path_nodes_open) {
GtkCTree *ctree = GLOBALS->ctree_main;
int rv = 1 ; /* can possible open */
if(ctree) {
@@ -295,7 +305,7 @@ int force_open_tree_node(char *name) {
node = gctr->parent;
gctr = GTK_CTREE_ROW(node);
nodehist[i] = node;
- exp1[i--] = gctr->expanded;
+ exp1[i--] = gctr->expanded || (keep_path_nodes_open != 0);
}
gtk_clist_freeze(GTK_CLIST(ctree));
/* fully expand down */
@@ -1175,6 +1185,7 @@ static void destroy_callback(GtkWidget *widget, GtkWidget *nothing)
GLOBALS->dnd_sigview = NULL;
GLOBALS->gtk2_tree_frame = NULL;
GLOBALS->ctree_main = NULL;
+ GLOBALS->filter_entry = NULL; /* when treebox() SST goes away after closed and rc hide_sst is true */
free_afl();
if(GLOBALS->selected_hierarchy_name)
@@ -1345,7 +1356,7 @@ do_tooltips:
/* Signal names. */
- GLOBALS->sig_store_treesearch_gtk2_c_1 = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING);
+ GLOBALS->sig_store_treesearch_gtk2_c_1 = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_STRING);
GLOBALS->sig_root_treesearch_gtk2_c_1 = GLOBALS->treeroot;
fill_sig_store ();
@@ -1367,6 +1378,16 @@ do_tooltips:
case EXTLOAD_FILE:
#endif
case FST_FILE:
+ /* fallthrough for Dir is deliberate for extload and FST */
+ if(GLOBALS->nonimplicit_direction_encountered)
+ {
+ column = gtk_tree_view_column_new_with_attributes ("Dir",
+ renderer,
+ "text", DIR_COLUMN,
+ NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (sig_view), column);
+ }
+
case AE2_FILE:
case VCD_FILE:
case VCD_RECODER_FILE:
@@ -1610,7 +1631,7 @@ GtkWidget* treeboxframe(char *title, GtkSignalFunc func)
/* Signal names. */
- GLOBALS->sig_store_treesearch_gtk2_c_1 = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING);
+ GLOBALS->sig_store_treesearch_gtk2_c_1 = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_STRING);
GLOBALS->sig_root_treesearch_gtk2_c_1 = GLOBALS->treeroot;
fill_sig_store ();
@@ -1632,6 +1653,16 @@ GtkWidget* treeboxframe(char *title, GtkSignalFunc func)
case EXTLOAD_FILE:
#endif
case FST_FILE:
+ /* fallthrough for Dir is deliberate for extload and FST */
+ if(GLOBALS->nonimplicit_direction_encountered)
+ {
+ column = gtk_tree_view_column_new_with_attributes ("Dir",
+ renderer,
+ "text", DIR_COLUMN,
+ NULL);
+ gtk_tree_view_append_column (GTK_TREE_VIEW (sig_view), column);
+ }
+
case AE2_FILE:
case VCD_FILE:
case VCD_RECODER_FILE:
diff --git a/src/vcd.c b/src/vcd.c
index 9aa4be2..b163fff 100644
--- a/src/vcd.c
+++ b/src/vcd.c
@@ -1146,6 +1146,12 @@ for(;;)
case 't': ttype = TREE_VCD_ST_TASK; break;
case 'f': ttype = (GLOBALS->yytext_vcd_c_1[1] == 'u') ? TREE_VCD_ST_FUNCTION : TREE_VCD_ST_FORK; break;
case 'b': ttype = TREE_VCD_ST_BEGIN; break;
+ case 'g': ttype = TREE_VCD_ST_GENERATE; break;
+ case 's': ttype = TREE_VCD_ST_STRUCT; break;
+ case 'u': ttype = TREE_VCD_ST_UNION; break;
+ case 'c': ttype = TREE_VCD_ST_CLASS; break;
+ case 'i': ttype = TREE_VCD_ST_INTERFACE; break;
+ case 'p': ttype = (GLOBALS->yytext_vcd_c_1[1] == 'r') ? TREE_VCD_ST_PROGRAM : TREE_VCD_ST_PACKAGE; break;
default: ttype = TREE_UNKNOWN;
break;
}
@@ -2056,6 +2062,14 @@ switch(v->vartype)
case V_WOR: nvt = ND_VCD_WOR; break;
case V_PORT: nvt = ND_VCD_PORT; break;
case V_STRINGTYPE: nvt = ND_GEN_STRING; break;
+ case V_BIT: nvt = ND_SV_BIT; break;
+ case V_LOGIC: nvt = ND_SV_LOGIC; break;
+ case V_INT: nvt = ND_SV_INT; break;
+ case V_SHORTINT: nvt = ND_SV_SHORTINT; break;
+ case V_LONGINT: nvt = ND_SV_LONGINT; break;
+ case V_BYTE: nvt = ND_SV_BYTE; break;
+ case V_ENUM: nvt = ND_SV_ENUM; break;
+ /* V_SHORTREAL as a type does not exist for VCD: is cast to V_REAL */
default: nvt = ND_UNSPECIFIED_DEFAULT; break;
}
n->vartype = nvt;
diff --git a/src/vcd.h b/src/vcd.h
index 6777cf7..4c7b7ea 100644
--- a/src/vcd.h
+++ b/src/vcd.h
@@ -60,10 +60,13 @@ VCDNAM_ESCAPE };
/* fix for contrib/rtlbrowse */
#ifndef VLEX_DEFINES_H
enum VarTypes { V_EVENT, V_PARAMETER,
- V_INTEGER, V_REAL, V_REAL_PARAMETER=V_REAL, V_REALTIME=V_REAL, V_REG, V_SUPPLY0,
+ V_INTEGER, V_REAL, V_REAL_PARAMETER=V_REAL, V_REALTIME=V_REAL, V_SHORTREAL=V_REAL, V_REG, V_SUPPLY0,
V_SUPPLY1, V_TIME, V_TRI, V_TRIAND, V_TRIOR,
- V_TRIREG, V_TRI0, V_TRI1, V_WAND, V_WIRE, V_WOR, V_PORT, V_IN=V_PORT, V_OUT=V_PORT, V_INOUT=V_PORT, V_STRINGTYPE,
- V_END, V_LB, V_COLON, V_RB, V_STRING };
+ V_TRIREG, V_TRI0, V_TRI1, V_WAND, V_WIRE, V_WOR, V_PORT, V_IN=V_PORT, V_OUT=V_PORT, V_INOUT=V_PORT,
+ V_BIT, V_LOGIC, V_INT, V_SHORTINT, V_LONGINT, V_BYTE, V_ENUM,
+ V_STRINGTYPE,
+ V_END, V_LB, V_COLON, V_RB, V_STRING
+};
#endif
/* for vcd_recoder.c */
diff --git a/src/vcd_keywords.c b/src/vcd_keywords.c
index df319c0..133636d 100644
--- a/src/vcd_keywords.c
+++ b/src/vcd_keywords.c
@@ -43,12 +43,12 @@ error "gperf generated tables don't work with this execution character set. Plea
struct vcd_keyword { const char *name; int token; };
-#define TOTAL_KEYWORDS 25
+#define TOTAL_KEYWORDS 33
#define MIN_WORD_LENGTH 2
#define MAX_WORD_LENGTH 14
#define MIN_HASH_VALUE 5
-#define MAX_HASH_VALUE 41
-/* maximum key range = 37, duplicates = 0 */
+#define MAX_HASH_VALUE 69
+/* maximum key range = 65, duplicates = 0 */
#ifdef __GNUC__
__inline
@@ -64,34 +64,34 @@ keyword_hash (str, len)
{
static const unsigned char asso_values[] =
{
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 26, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 4, 1,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 11, 6, 42, 1, 42, 16, 42, 42, 24, 42,
- 1, 6, 16, 42, 1, 6, 1, 42, 42, 21,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
- 42, 42, 42, 42, 42, 42
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 36, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 56, 51,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 26,
+ 26, 1, 36, 1, 70, 36, 6, 70, 31, 1,
+ 1, 70, 16, 1, 6, 1, 6, 1, 70, 70,
+ 21, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
+ 70, 70, 70, 70, 70, 70, 70
};
- return len + asso_values[(unsigned char)str[len - 1]] + asso_values[(unsigned char)str[0]];
+ return len + asso_values[(unsigned char)str[len - 1]] + asso_values[(unsigned char)str[0]+1];
}
#ifdef __GNUC__
@@ -110,59 +110,83 @@ check_identifier (str, len)
{""}, {""}, {""}, {""}, {""},
#line 23 "./vcd_keywords.gperf"
{"reg", V_REG},
-#line 32 "./vcd_keywords.gperf"
- {"tri1", V_TRI1},
-#line 29 "./vcd_keywords.gperf"
- {"trior", V_TRIOR},
-#line 30 "./vcd_keywords.gperf"
- {"trireg", V_TRIREG},
-#line 31 "./vcd_keywords.gperf"
- {"tri0", V_TRI0},
-#line 38 "./vcd_keywords.gperf"
- {"out", V_OUT},
#line 26 "./vcd_keywords.gperf"
{"time", V_TIME},
-#line 17 "./vcd_keywords.gperf"
- {"event", V_EVENT},
-#line 40 "./vcd_keywords.gperf"
- {"string", V_STRINGTYPE},
-#line 25 "./vcd_keywords.gperf"
- {"supply1", V_SUPPLY1},
-#line 22 "./vcd_keywords.gperf"
- {"realtime", V_REALTIME},
-#line 21 "./vcd_keywords.gperf"
- {"real_parameter", V_REAL_PARAMETER},
-#line 24 "./vcd_keywords.gperf"
- {"supply0", V_SUPPLY0},
-#line 28 "./vcd_keywords.gperf"
- {"triand", V_TRIAND},
+ {""},
+#line 30 "./vcd_keywords.gperf"
+ {"trireg", V_TRIREG},
#line 37 "./vcd_keywords.gperf"
{"in", V_IN},
-#line 27 "./vcd_keywords.gperf"
- {"tri", V_TRI},
+#line 22 "./vcd_keywords.gperf"
+ {"realtime", V_REALTIME},
#line 36 "./vcd_keywords.gperf"
{"port", V_PORT},
+#line 29 "./vcd_keywords.gperf"
+ {"trior", V_TRIOR},
+#line 40 "./vcd_keywords.gperf"
+ {"string", V_STRINGTYPE},
+#line 45 "./vcd_keywords.gperf"
+ {"longint", V_LONGINT},
+#line 43 "./vcd_keywords.gperf"
+ {"int", V_INT},
+#line 18 "./vcd_keywords.gperf"
+ {"parameter", V_PARAMETER},
#line 39 "./vcd_keywords.gperf"
{"inout", V_INOUT},
{""},
#line 19 "./vcd_keywords.gperf"
{"integer", V_INTEGER},
+#line 44 "./vcd_keywords.gperf"
+ {"shortint", V_SHORTINT},
+#line 21 "./vcd_keywords.gperf"
+ {"real_parameter", V_REAL_PARAMETER},
+ {""}, {""}, {""},
+#line 38 "./vcd_keywords.gperf"
+ {"out", V_OUT},
+#line 34 "./vcd_keywords.gperf"
+ {"wire", V_WIRE},
+ {""}, {""}, {""},
#line 35 "./vcd_keywords.gperf"
{"wor", V_WOR},
-#line 18 "./vcd_keywords.gperf"
- {"parameter", V_PARAMETER},
- {""}, {""},
+#line 46 "./vcd_keywords.gperf"
+ {"byte", V_BYTE},
+#line 42 "./vcd_keywords.gperf"
+ {"logic", V_LOGIC},
+#line 28 "./vcd_keywords.gperf"
+ {"triand", V_TRIAND},
+ {""},
+#line 41 "./vcd_keywords.gperf"
+ {"bit", V_BIT},
#line 20 "./vcd_keywords.gperf"
{"real", V_REAL},
- {""},
-#line 34 "./vcd_keywords.gperf"
- {"wire", V_WIRE},
+ {""}, {""}, {""},
+#line 27 "./vcd_keywords.gperf"
+ {"tri", V_TRI},
+#line 47 "./vcd_keywords.gperf"
+ {"enum", V_ENUM},
{""}, {""}, {""}, {""},
+#line 48 "./vcd_keywords.gperf"
+ {"shortreal", V_SHORTREAL},
+#line 17 "./vcd_keywords.gperf"
+ {"event", V_EVENT},
+ {""}, {""}, {""},
#line 33 "./vcd_keywords.gperf"
{"wand", V_WAND},
{""}, {""}, {""}, {""},
-#line 41 "./vcd_keywords.gperf"
- {"$end", V_END}
+#line 32 "./vcd_keywords.gperf"
+ {"tri1", V_TRI1},
+ {""}, {""}, {""}, {""},
+#line 31 "./vcd_keywords.gperf"
+ {"tri0", V_TRI0},
+ {""}, {""},
+#line 25 "./vcd_keywords.gperf"
+ {"supply1", V_SUPPLY1},
+ {""},
+#line 49 "./vcd_keywords.gperf"
+ {"$end", V_END},
+ {""}, {""},
+#line 24 "./vcd_keywords.gperf"
+ {"supply0", V_SUPPLY0}
};
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -179,7 +203,7 @@ check_identifier (str, len)
}
return 0;
}
-#line 42 "./vcd_keywords.gperf"
+#line 50 "./vcd_keywords.gperf"
int vcd_keyword_code(const char *s, unsigned int len)
diff --git a/src/vcd_keywords.gperf b/src/vcd_keywords.gperf
index cc4b8cc..777fc44 100644
--- a/src/vcd_keywords.gperf
+++ b/src/vcd_keywords.gperf
@@ -38,6 +38,14 @@ in, V_IN
out, V_OUT
inout, V_INOUT
string, V_STRINGTYPE
+bit, V_BIT
+logic, V_LOGIC
+int, V_INT
+shortint, V_SHORTINT
+longint, V_LONGINT
+byte, V_BYTE
+enum, V_ENUM
+shortreal, V_SHORTREAL
$end, V_END
%%
diff --git a/src/vcd_partial.c b/src/vcd_partial.c
index d32c9e0..bcdb332 100644
--- a/src/vcd_partial.c
+++ b/src/vcd_partial.c
@@ -1096,6 +1096,12 @@ for(;;)
case 't': ttype = TREE_VCD_ST_TASK; break;
case 'f': ttype = (GLOBALS->yytext_vcd_partial_c_2[1] == 'u') ? TREE_VCD_ST_FUNCTION : TREE_VCD_ST_FORK; break;
case 'b': ttype = TREE_VCD_ST_BEGIN; break;
+ case 'g': ttype = TREE_VCD_ST_GENERATE; break;
+ case 's': ttype = TREE_VCD_ST_STRUCT; break;
+ case 'u': ttype = TREE_VCD_ST_UNION; break;
+ case 'c': ttype = TREE_VCD_ST_CLASS; break;
+ case 'i': ttype = TREE_VCD_ST_INTERFACE; break;
+ case 'p': ttype = (GLOBALS->yytext_vcd_partial_c_2[1] == 'r') ? TREE_VCD_ST_PROGRAM : TREE_VCD_ST_PACKAGE; break;
default: ttype = TREE_UNKNOWN;
break;
}
@@ -2553,7 +2559,6 @@ if(GLOBALS->partial_vcd)
while(*GLOBALS->consume_ptr_vcd_partial_c_1)
{
- Trptr t;
int old_maxtime_marker_conflict = (GLOBALS->tims.marker > GLOBALS->max_time);
vcd_parse();
diff --git a/src/vcd_recoder.c b/src/vcd_recoder.c
index c210593..43eb6fc 100644
--- a/src/vcd_recoder.c
+++ b/src/vcd_recoder.c
@@ -1486,6 +1486,12 @@ for(;;)
case 't': ttype = TREE_VCD_ST_TASK; break;
case 'f': ttype = (GLOBALS->yytext_vcd_recoder_c_3[1] == 'u') ? TREE_VCD_ST_FUNCTION : TREE_VCD_ST_FORK; break;
case 'b': ttype = TREE_VCD_ST_BEGIN; break;
+ case 'g': ttype = TREE_VCD_ST_GENERATE; break;
+ case 's': ttype = TREE_VCD_ST_STRUCT; break;
+ case 'u': ttype = TREE_VCD_ST_UNION; break;
+ case 'c': ttype = TREE_VCD_ST_CLASS; break;
+ case 'i': ttype = TREE_VCD_ST_INTERFACE; break;
+ case 'p': ttype = (GLOBALS->yytext_vcd_recoder_c_3[1] == 'r') ? TREE_VCD_ST_PROGRAM : TREE_VCD_ST_PACKAGE; break;
default: ttype = TREE_UNKNOWN;
break;
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-electronics/gtkwave.git
More information about the Pkg-electronics-commits
mailing list