pulling in most recent code

This commit is contained in:
Edward Arthur Bingham 2022-09-24 17:47:18 -04:00
commit 53ea178541
225 changed files with 282402 additions and 0 deletions

1282
ABOUT-NLS Normal file

File diff suppressed because it is too large Load Diff

10
AUTHORS Normal file
View File

@ -0,0 +1,10 @@
AUTHORS:
gwave was written by Steve Tell <tell@cs.unc.edu> or <steve@telltronics.org>
gaw is written by hervé Quillévéré <www.rvq.fr>
CONTRIBUTORS:
Franck Paugnat franck.paugnat at imag.fr
Torsten Maehne torsten.maehne at epfl.ch
TRANSLATORS:
French: Franck Paugnat franck.paugnat at imag.fr

340
COPYING Normal file
View File

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

254
ChangeLog Normal file
View File

@ -0,0 +1,254 @@
Tue Mar 15 10:34:54 CET 2022
- corrected crash when pressing the reload all button.
- corrected crash when pressing the zoom/zoom-Y-full after deleting panel.
Global commands need a selected panel.
Sun Oct 4 10:11:25 CEST 2020
- validate option -p on command line.
Tue Sep 22 09:29:01 CEST 2020
- patch from stephan adding a 'reload_all' ttg comand.
- update wds used by gawio when issuing the global reload all command from
menu.
Sun Jun 21 11:38:49 CEST 2020
- patch from Stephan adding color to a visible wave when gaw is driven by
external commands (ttg). Stephan use xschem.
Sun Jan 26 09:33:00 CET 2020
- suppress empty lines when reading spice3 format in ss_spice3.c.
Tue Jul 16 12:52:33 CEST 2019
- added gaw3.spec in contrib for rpm build.
Sun Jul 16 10:38:01 CEST 2017
- removed some deprecated from gawda.h
- added X axix conversion to status bar
Thu Jul 13 10:42:59 CEST 2017
- added an X axix conversion function. Time_t independant variable is
usefull to record some data like electricity counter for example.
A conversion to date time makes result more meaningfull for users.
Mon Jul 10 11:43:02 CEST 2017
- let users to change colors from inside the application for buttons
when the destop theme make then unreadable.
Mon Jun 5 14:28:49 CEST 2017
- 'GAWMISCL_H' is used as a header guard
Sat Mar 25 19:18:50 CET 2017
- modified gaw-gtkrc.css to get clear labels in gaw window.
- corrected bug on algo selection
- corrected bug on drag and drop Add panel button
- corrected bug in gawpanel : clicking in a zoomed windows remved the zoom.
Sat Jan 21 10:23:57 CET 2017
- modified gaw-gtkrc.css to remove 'Theme parsing error' with gtk+-3.20.
Mon Jul 4 08:17:55 CEST 2016
- replaced prelight with hover in gaw-gtkrc.css
Sat Mar 5 13:47:15 CET 2016
- gtk only generate deprecated. Depending on your gtk version don't be
in hurry to take the last gaw version. It may mot compile...
Sat Jul 11 13:54:09 CEST 2015
- corected some Gtk-Critical messages appearing on Centos 7.
Sat Feb 28 16:33:18 CET 2015
- Patch from Glenn Ramalho. ss_spice3.c : adaptation of Spice3 format to
the output of Cadence Spectre tools.
Sun Jan 4 09:39:12 CET 2015
- Patch from Sergey Bashkiro. Adding more tests on NaNs values.
Mon Oct 27 13:38:24 CET 2014
- deprecated from gtk looks to be stabilized ?...
Sat Apr 5 16:28:32 CEST 2014
- Replaced memcpy by memmove for memory areas that do overlap.
Some strings were not displayed correctly.
Sun Mar 9 16:23:38 CEST 2014
- Corrected about 200 deprecated produced by the GTK-- team.
Warning new bugs in prevision.
Thu Aug 1 08:00:06 CEST 2013
- patch contribued by Thomas Russo for compilation on FreeBSD.
Sun May 12 09:33:16 CEST 2013
- added selection of drawing algo and line clip algo
Sun May 5 17:38:46 CEST 2013
- corrected ss_hspice.c : ss_hspice binary was only reading one block of
data.
- segmentation fault in gawfile.c
- a lot of modifications to track gtk3 deprecated Gdkcolor => GdkRGBA.
Fri Jan 11 19:21:10 CET 2013
- changed message "May-be remove the file '%s' and run %s again")
in userprefs.h userprefs.c
Thu Sep 27 09:22:07 CEST 2012
- project renamed gaw3 as GTK-3: there are too many differences in the
GTK2, GTK3 interface that it seems necessary to separate the code
instead of putting an ifdef at each line.
- removed all ifdef HAVE_GTK300 and GTK2 specific code
- changed gtk_table_* -> gtk_grid_*
- changed gtk_hbox_new, gtk_vbox_new -> gtk_box_new
- changed gtk_hscrollbar_new, gtk_vscrollbar_new -> gtk_scrollbar_new
Fri Oct 14 16:15:32 CEST 2011
- test ! $gtk30 no longer works in fedora16
changed to test $gtk30 = false || test ! $gtk30
Tue Oct 11 11:22:32 CEST 2011
- added installation of gaw.desktop gaw.png.
Thu Sep 29 17:26:34 CEST 2011
- corrected an incomplete change :OSX do not recognize the type
__compar_fn_t. Changed with a local typedef.
Tue Sep 6 11:01:39 CEST 2011
- Display problem with a bad format input file. Discard bad data and
show a warning.
Thu Sep 1 08:51:58 CEST 2011
- OSX do not recognize the type __compar_fn_t. Changed with a local
typedef.
- Ubuntu do not like the test "if test $gtk30 = false ;". Changed to
"if test ! $gtk30 ;".
- Running gaw on Ubuntu provides a lot of complains about missing
libraries. Install these packages. There is still a
Gtk-WARNING **: gtk_widget_size_allocate(): attempt to allocate widget
with width 18 and height -5
There is nothing I can do in gaw. Just wait a fixed gtk library.
Thu Aug 11 19:02:14 CEST 2011
- compiled and run with gtk3 after a lot of modifications consisting of
specific code switched with #ifdef HAVE_GTK300.
- replaced (for gtk3 only) gaw-gtkrc with gaw-gtkrc.css
- fixed a segmentation fault when gaw exit after try to load an inexistent
file.
Tue Aug 9 08:28:03 CEST 2011
- removed reference to GdkColormap if HAVE_GTK300 is defined. Ubuntu have
not this symbol defined, it is deprecated.
Wed Aug 3 11:37:29 CEST 2011
- Modified configure.ac to compile with gtk3.0.
- Modified userprefs to create a new complete gawrc at startup.
- Added filters to file selection.
- Added a text tool to draw comments in panel.
Tue Jul 26 18:36:40 CEST 2011
- migration to gtk3 step 2. Replaced Gdk drawing with Cairo. Removed
GdkGC stuff.
Thu Jul 7 19:07:42 CEST 2011
- a lot of modifications with the same functionnalities for preparing the
migration to gtk3. See Migrating from GTK+ 2.x to GTK+ 3 in
GTK+ Reference Manual.
Fri May 20 17:43:48 CEST 2011
- corrected, Segmentation fault in gawdnd.c after reloading a file and
deleting waves with Dnd. wavevars were not correctly updated in all
places.
Mon Apr 25 11:27:39 CEST 2011
- added gaw.desktop gaw.png for gnome desktop menu
Thu Mar 17 09:49:59 CET 2011
- Suppress Gtk-Warning when destroying gaw. Gtkbegin to kill the gdk window
that is not longer valid for drawing. (gawda.c)
Fri Feb 18 13:09:20 CET 2011
- corrected duplicated variables in configuration file
- On macosx, detection of screen size does not work; to correct, a default
value is set when this fails. This value can be hand modified later in
the configuration file
- corrected, in gawlabel.c, a bad list element producing crash.
- corrected, Segmentation fault when allocating segments for grid, gawda.c.
Mon Jan 17 16:25:09 CET 2011
- remove puntuation characters at beginning of line 1 of ascii data file,
these characters confuse field detection.
- changed drawing algorithm to make display more realistic when more
than 2 datas points to 1 pixel on the screen.
- reworked French language file.
Added separated action entries for the toolbar for labelling purpose.
Mon Jan 10 10:29:59 CET 2011
- web site change herveq.fr become rvq.fr (same french spelling !)
Sat Sep 18 17:32:43 CEST 2010
- replaced rcfile.c with userprefs.c
- Corrected segmentation fault in function reload
2010-09-07 gettextize <bug-gnu-gettext@gnu.org>
- m4/iconv.m4: Upgrade to gettext-0.18.1.
- Makefile.am (ACLOCAL_AMFLAGS): New variable.
- configure.ac (AM_GNU_GETTEXT_VERSION): Bump to 0.18.1.
Thu Sep 2 14:52:27 CEST 2010
- modifications to compile on CentOS 5.5 with gtk 2.10.4
Fri Aug 27 10:40:54 CEST 2010
- always place stdlib.h before glib.h for compiling on CentOS 5.5
- added some hack for compiling with older version of gtk
Fri Aug 6 14:57:08 CEST 2010
- top level table reorganization to insert a scrolled window for panels
- lmtable reorganization to simplify ylabels and more ylabels management.
- consolidate grid, xLabels and xlabels display.
- corrected some bugs in sound card interface.
- corrected some bugs with toggle buttons.
- internationalization is now functionnal.
- added some code to hanle the display of some narrow pics.
Thu Jul 22 16:15:44 CEST 2010
- corrected some GTK-WARNING when deleting panels
- corrected display change when trying to delete the last panel
- icon GTK_STOCK_DELETE has changed in GTK : I changed it to
GTK_STOCK_CUT in gaw.
Wed Jul 21 07:33:48 CEST 2010
- toolbar style do not work fine with gtk+ 2.20.1. Added toolBarStyle in
rc file to save the state of the tyle.
Fri May 28 08:53:34 CEST 2010
- added -lXext -lm to src/Makefile.am for compiler gcc version 4.4.4
Fri May 14 14:24:23 CEST 2010
- Patch from Torsten MAEHNE for compiling on MACOSX :
- there is no libasound on OSX (The API is CoreAudio). Gaw sound is
disabled.
- Solve problems with byte swap declarations.
Tue May 4 11:07:56 CEST 2010
- corrected segmentation fault when reloading bad loaded files.
- removed some useless lines of code.
Wed Mar 10 09:36:12 CET 2010
- corrected bug in dnd.
Thu Jan 21 16:55:31 CET 2010
- added linear and logarith grid and labels.
- corrected zoom problems.
- added feature to allow the user to change the set of color in panels.
- added internal resize between panels and left side.
- added cursors menu.
Thu Nov 19 14:37:29 CET 2009
- added talk to gaw
- added export all panels to image file.
- added multifile load.
- added export displayed data.
- added possibility to export data in a format known by the library.
- added a capture data from the sound card.
- addded a .wav format.
- removed some layers of complexity in the library and may be added some
ones.
Mon Jun 29 18:19:26 CEST 2009
- After a locale problem on MAC OSX, changed all 'atof' to 'g_ascii_strtod'.
People have to set locale in environnemnt, if needed.
Fri Jun 26 11:42:36 CEST 2009
- spicestream.c : modified to accept line with CRLF
2009/01/17 : minor changes in common files ( common to other of my projects)
rcfile.c msglog.c to make silent the gcc compiler 4.3.2
warnings under X86_64 architecture.

370
INSTALL Normal file
View File

@ -0,0 +1,370 @@
Installation Instructions
*************************
Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. This file is offered as-is,
without warranty of any kind.
Basic Installation
==================
Briefly, the shell command `./configure && make && make install'
should configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package. Some packages provide this
`INSTALL' file but do not implement all of the features documented
below. The lack of an optional feature in a given package is not
necessarily a bug. More recommendations for GNU packages can be found
in *note Makefile Conventions: (standards)Makefile Conventions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You need `configure.ac' if
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
Running `configure' might take a while. While running, it prints
some messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package, generally using the just-built uninstalled binaries.
4. Type `make install' to install the programs and any data files and
documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular
user, and only the `make install' phase executed with root
privileges.
5. Optionally, type `make installcheck' to repeat any self-tests, but
this time using the binaries in their final installed location.
This target does not install anything. Running this target as a
regular user, particularly if the prior `make install' required
root privileges, verifies that the installation completed
correctly.
6. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
7. Often, you can also type `make uninstall' to remove the installed
files again. In practice, not all packages have tested that
uninstallation works correctly, even though it is required by the
GNU Coding Standards.
8. Some packages, particularly those that use Automake, provide `make
distcheck', which can by used by developers to test that all other
targets like `make install' and `make uninstall' work correctly.
This target is generally not run by end users.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'. This
is known as a "VPATH" build.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture.
On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or
"universal" binaries--by specifying multiple `-arch' options to the
compiler but only a single `-arch' option to the preprocessor. Like
this:
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CPP="gcc -E" CXXCPP="g++ -E"
This is not guaranteed to produce working output in all cases, you
may have to build one architecture at a time and combine the results
using the `lipo' tool if you have problems.
Installation Names
==================
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX', where PREFIX must be an
absolute file name.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them. In general, the
default for these options is expressed in terms of `${prefix}', so that
specifying just `--prefix' will affect all of the other directory
specifications that were not explicitly provided.
The most portable way to affect installation locations is to pass the
correct locations to `configure'; however, many packages provide one or
both of the following shortcuts of passing variable assignments to the
`make install' command line to change installation locations without
having to reconfigure or recompile.
The first method involves providing an override variable for each
affected directory. For example, `make install
prefix=/alternate/directory' will choose an alternate location for all
directory configuration variables that were expressed in terms of
`${prefix}'. Any directories that were specified during `configure',
but not in terms of `${prefix}', must each be overridden at install
time for the entire installation to be relocated. The approach of
makefile variable overrides for each directory variable is required by
the GNU Coding Standards, and ideally causes no recompilation.
However, some platforms have known limitations with the semantics of
shared libraries that end up requiring recompilation when using this
method, particularly noticeable in packages that use GNU Libtool.
The second method involves providing the `DESTDIR' variable. For
example, `make install DESTDIR=/alternate/directory' will prepend
`/alternate/directory' before all installation names. The approach of
`DESTDIR' overrides is not required by the GNU Coding Standards, and
does not work on platforms that have drive letters. On the other hand,
it does better at avoiding recompilation issues, and works well even
when some directory options were not specified in terms of `${prefix}'
at `configure' time.
Optional Features
=================
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Some packages offer the ability to configure how verbose the
execution of `make' will be. For these packages, running `./configure
--enable-silent-rules' sets the default to minimal output, which can be
overridden with `make V=1'; while running `./configure
--disable-silent-rules' sets the default to verbose, which can be
overridden with `make V=0'.
Particular systems
==================
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
CC is not installed, it is recommended to use the following options in
order to use an ANSI C compiler:
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
HP-UX `make' updates targets which have the same time stamps as
their prerequisites, which makes it generally unusable when shipped
generated files such as `configure' are involved. Use GNU `make'
instead.
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
a workaround. If GNU CC is not installed, it is therefore recommended
to try
./configure CC="cc"
and if that doesn't work, try
./configure CC="cc -nodtk"
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
directory contains several dysfunctional programs; working variants of
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
in your `PATH', put it _after_ `/usr/bin'.
On Haiku, software installed for all users goes in `/boot/common',
not `/usr/local'. It is recommended to use the following options:
./configure --prefix=/boot/common
Specifying the System Type
==========================
There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS
KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
an Autoconf limitation. Until the limitation is lifted, you can use
this workaround:
CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
`configure' recognizes the following options to control how it
operates.
`--help'
`-h'
Print a summary of all of the options to `configure', and exit.
`--help=short'
`--help=recursive'
Print a summary of the options unique to this package's
`configure', and exit. The `short' variant lists options used
only in the top level, while the `recursive' variant lists options
also present in any nested packages.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`--prefix=DIR'
Use DIR as the installation prefix. *note Installation Names::
for more details, including other options available for fine-tuning
the installation locations.
`--no-create'
`-n'
Run the configure checks, but stop before creating any output
files.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

22
Makefile.am Normal file
View File

@ -0,0 +1,22 @@
SUBDIRS = lib src po
MOSTLYCLEANFILES = *.log core FILE *~
CLEANFILES = *.log core FILE *~
DISTCLEANFILES = *.log core FILE *~ prototype.bak
MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure config.h.in \
config.status aclocal.m4 config.guess config.rpath \
config.sub depcomp install-sh missing mkinstalldirs
EXTRA_DIST = doc/* \
examples/* \
ttg/* \
contrib/* \
gaw.desktop gaw.png
appsdir = $(datadir)/applications
icondir = $(datadir)/pixmaps
apps_DATA = gaw.desktop
icon_DATA = gaw.png
ACLOCAL_AMFLAGS = -I m4

921
Makefile.in Normal file
View File

@ -0,0 +1,921 @@
# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \
$(am__configure_deps) $(am__DIST_COMMON)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
ctags-recursive dvi-recursive html-recursive info-recursive \
install-data-recursive install-dvi-recursive \
install-exec-recursive install-html-recursive \
install-info-recursive install-pdf-recursive \
install-ps-recursive install-recursive installcheck-recursive \
installdirs-recursive pdf-recursive ps-recursive \
tags-recursive uninstall-recursive
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
*) f=$$p;; \
esac;
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
am__install_max = 40
am__nobase_strip_setup = \
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
am__nobase_strip = \
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
am__nobase_list = $(am__nobase_strip_setup); \
for p in $$list; do echo "$$p $$p"; done | \
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
if (++n[$$2] == $(am__install_max)) \
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
END { for (dir in files) print dir, files[dir] }'
am__base_list = \
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
am__uninstall_files_from_dir = { \
test -z "$$files" \
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(appsdir)" "$(DESTDIR)$(icondir)"
DATA = $(apps_DATA) $(icon_DATA)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
am__recursive_targets = \
$(RECURSIVE_TARGETS) \
$(RECURSIVE_CLEAN_TARGETS) \
$(am__extra_recursive_targets)
AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
cscope distdir distdir-am dist dist-all distcheck
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \
config.h.in
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
DIST_SUBDIRS = $(SUBDIRS)
am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
ABOUT-NLS AUTHORS COPYING ChangeLog INSTALL NEWS README \
compile config.guess config.rpath config.sub depcomp \
install-sh missing
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
if test -d "$(distdir)"; then \
find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -rf "$(distdir)" \
|| { sleep 5 && rm -rf "$(distdir)"; }; \
else :; fi
am__post_remove_distdir = $(am__remove_distdir)
am__relativize = \
dir0=`pwd`; \
sed_first='s,^\([^/]*\)/.*$$,\1,'; \
sed_rest='s,^[^/]*/*,,'; \
sed_last='s,^.*/\([^/]*\)$$,\1,'; \
sed_butlast='s,/*[^/]*$$,,'; \
while test -n "$$dir1"; do \
first=`echo "$$dir1" | sed -e "$$sed_first"`; \
if test "$$first" != "."; then \
if test "$$first" = ".."; then \
dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \
dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \
else \
first2=`echo "$$dir2" | sed -e "$$sed_first"`; \
if test "$$first2" = "$$first"; then \
dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \
else \
dir2="../$$dir2"; \
fi; \
dir0="$$dir0"/"$$first"; \
fi; \
fi; \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
DIST_TARGETS = dist-gzip
# Exists only to be overridden by the user if desired.
AM_DISTCHECK_DVI_TARGET = dvi
distuninstallcheck_listfiles = find . -type f -print
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
ALSA_CFLAGS = @ALSA_CFLAGS@
ALSA_LIBS = @ALSA_LIBS@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CSCOPE = @CSCOPE@
CTAGS = @CTAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
GAWRCDIR = @GAWRCDIR@
GAW_CFLAGS = @GAW_CFLAGS@
GAW_LDFLAGS = @GAW_LDFLAGS@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB228_CFLAGS = @GLIB228_CFLAGS@
GLIB228_LIBS = @GLIB228_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
GTK300_CFLAGS = @GTK300_CFLAGS@
GTK300_LIBS = @GTK300_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INTLLIBS = @INTLLIBS@
INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
POW_LIB = @POW_LIB@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
SUBDIRS = lib src po
MOSTLYCLEANFILES = *.log core FILE *~
CLEANFILES = *.log core FILE *~
DISTCLEANFILES = *.log core FILE *~ prototype.bak
MAINTAINERCLEANFILES = *.log core FILE *~ Makefile.in configure config.h.in \
config.status aclocal.m4 config.guess config.rpath \
config.sub depcomp install-sh missing mkinstalldirs
EXTRA_DIST = doc/* \
examples/* \
ttg/* \
contrib/* \
gaw.desktop gaw.png
appsdir = $(datadir)/applications
icondir = $(datadir)/pixmaps
apps_DATA = gaw.desktop
icon_DATA = gaw.png
ACLOCAL_AMFLAGS = -I m4
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh: Makefile
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
$(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
$(am__cd) $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
$(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
$(am__aclocal_m4_deps):
config.h: stamp-h1
@test -f $@ || rm -f stamp-h1
@test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
($(am__cd) $(top_srcdir) && $(AUTOHEADER))
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
install-appsDATA: $(apps_DATA)
@$(NORMAL_INSTALL)
@list='$(apps_DATA)'; test -n "$(appsdir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(appsdir)'"; \
$(MKDIR_P) "$(DESTDIR)$(appsdir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(appsdir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(appsdir)" || exit $$?; \
done
uninstall-appsDATA:
@$(NORMAL_UNINSTALL)
@list='$(apps_DATA)'; test -n "$(appsdir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(appsdir)'; $(am__uninstall_files_from_dir)
install-iconDATA: $(icon_DATA)
@$(NORMAL_INSTALL)
@list='$(icon_DATA)'; test -n "$(icondir)" || list=; \
if test -n "$$list"; then \
echo " $(MKDIR_P) '$(DESTDIR)$(icondir)'"; \
$(MKDIR_P) "$(DESTDIR)$(icondir)" || exit 1; \
fi; \
for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; \
done | $(am__base_list) | \
while read files; do \
echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(icondir)'"; \
$(INSTALL_DATA) $$files "$(DESTDIR)$(icondir)" || exit $$?; \
done
uninstall-iconDATA:
@$(NORMAL_UNINSTALL)
@list='$(icon_DATA)'; test -n "$(icondir)" || list=; \
files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
dir='$(DESTDIR)$(icondir)'; $(am__uninstall_files_from_dir)
# 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,
# (1) if the variable is set in 'config.status', edit 'config.status'
# (which will cause the Makefiles to be regenerated when you run 'make');
# (2) otherwise, pass the desired values on the 'make' command line.
$(am__recursive_targets):
@fail=; \
if $(am__make_keepgoing); then \
failcom='fail=yes'; \
else \
failcom='exit 1'; \
fi; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-recursive
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-recursive
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscope: cscope.files
test ! -s cscope.files \
|| $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
clean-cscope:
-rm -f cscope.files
cscope.files: clean-cscope cscopelist
cscopelist: cscopelist-recursive
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-rm -f cscope.out cscope.in.out cscope.po.out cscope.files
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
$(am__remove_distdir)
test -d "$(distdir)" || mkdir "$(distdir)"
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
$(am__make_dryrun) \
|| test -d "$(distdir)/$$subdir" \
|| $(MKDIR_P) "$(distdir)/$$subdir" \
|| exit 1; \
dir1=$$subdir; dir2="$(distdir)/$$subdir"; \
$(am__relativize); \
new_distdir=$$reldir; \
dir1=$$subdir; dir2="$(top_distdir)"; \
$(am__relativize); \
new_top_distdir=$$reldir; \
echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \
echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \
($(am__cd) $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$new_top_distdir" \
distdir="$$new_distdir" \
am__remove_distdir=: \
am__skip_length_check=: \
am__skip_mode_fix=: \
distdir) \
|| exit 1; \
fi; \
done
-test -n "$(am__skip_mode_fix)" \
|| find "$(distdir)" -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r "$(distdir)"
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz
$(am__post_remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
$(am__post_remove_distdir)
dist-lzip: distdir
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
$(am__post_remove_distdir)
dist-xz: distdir
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
$(am__post_remove_distdir)
dist-zstd: distdir
tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst
$(am__post_remove_distdir)
dist-tarZ: distdir
@echo WARNING: "Support for distribution archives compressed with" \
"legacy program 'compress' is deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__post_remove_distdir)
dist-shar: distdir
@echo WARNING: "Support for shar distribution archives is" \
"deprecated." >&2
@echo WARNING: "It will be removed altogether in Automake 2.0" >&2
shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz
$(am__post_remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__post_remove_distdir)
dist dist-all:
$(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:'
$(am__post_remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lz*) \
lzip -dc $(distdir).tar.lz | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
*.tar.zst*) \
zstd -dc $(distdir).tar.zst | $(am__untar) ;;\
esac
chmod -R a-w $(distdir)
chmod u+w $(distdir)
mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst
chmod a-w $(distdir)
test -d $(distdir)/_build || exit 0; \
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& am__cwd=`pwd` \
&& $(am__cd) $(distdir)/_build/sub \
&& ../../configure \
$(AM_DISTCHECK_CONFIGURE_FLAGS) \
$(DISTCHECK_CONFIGURE_FLAGS) \
--srcdir=../.. --prefix="$$dc_install_base" \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck \
&& cd "$$am__cwd" \
|| exit 1
$(am__post_remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
distuninstallcheck:
@test -n '$(distuninstallcheck_dir)' || { \
echo 'ERROR: trying to run $@ with an empty' \
'$$(distuninstallcheck_dir)' >&2; \
exit 1; \
}; \
$(am__cd) '$(distuninstallcheck_dir)' || { \
echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \
exit 1; \
}; \
test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile $(DATA) config.h
installdirs: installdirs-recursive
installdirs-am:
for dir in "$(DESTDIR)$(appsdir)" "$(DESTDIR)$(icondir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
-test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-recursive
clean-am: clean-generic mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
html-am:
info: info-recursive
info-am:
install-data-am: install-appsDATA install-iconDATA
install-dvi: install-dvi-recursive
install-dvi-am:
install-exec-am:
install-html: install-html-recursive
install-html-am:
install-info: install-info-recursive
install-info-am:
install-man:
install-pdf: install-pdf-recursive
install-pdf-am:
install-ps: install-ps-recursive
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-appsDATA uninstall-iconDATA
.MAKE: $(am__recursive_targets) all install-am install-strip
.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
am--refresh check check-am clean clean-cscope clean-generic \
cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \
dist-zstd distcheck distclean distclean-generic distclean-hdr \
distclean-tags distcleancheck distdir distuninstallcheck dvi \
dvi-am html html-am info info-am install install-am \
install-appsDATA install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-iconDATA install-info install-info-am \
install-man install-pdf install-pdf-am install-ps \
install-ps-am install-strip installcheck installcheck-am \
installdirs installdirs-am maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
pdf-am ps ps-am tags tags-am uninstall uninstall-am \
uninstall-appsDATA uninstall-iconDATA
.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

0
NEWS Normal file
View File

209
README Normal file
View File

@ -0,0 +1,209 @@
Where you can gaw :
You can find gaw on these websites :
http://www.rvq.fr
http://www.herveq.tk
http://gaw.tuxfamily.org
Please discard http://www.herveq.fr
You can find a short description page on this web page:
http://www.rvq.fr/linux/gaw.php
Note : Fedora 13 : If you don't have icon in menu, run the command :
gconftool-2 --type boolean --set /desktop/gnome/interface/menus_have_icons true
See directory examples for example of different data file format.
Compiling:
We need :
- Gtk+ libs and headers installed.
- Alsa libasound and headers alsa/asoundlib.h installed.
tar zxvf gaw-yyyymmdd.tar.gz
cd gaw-yyyymmdd
./configure
make
If you do not want to embed libasound, try :
./configure --enable-gawsound=no
If you want to disable nls support :
./configure --disable-nls
Putting gaw in gnome menu (on Fedora)
cp gaw.desktop /usr/local/share/applications
cp gaw.png /usr/local/share/pixmaps/
Runnning gaw :
On command line : gaw
: gaw <file to load> ...
: gaw -h for some options
You can get help : leaving the mouse on a button will generate a tooltips.
As it is not possible to get a tooltips on a menu item, messages are
generated in the statusBar. The statusBar is at bottom left corner, and
displays "Welcome to gaw" when you enter gaw. So you should keep one eye on
the statusBar and the other on the menu item. This is difficult for some
people !!!
Sensible areas for Drag and Drop :
Sources for Drag and Drop :
Any data file icon on desktop or filemanager
menu buttons on list windows
buttons on left side of panels
Destinations for Drag and Drop :
Add Panel button on menu Bar
Delete wave button on menu Bar
Drawing Areas
Area where X labels are displayed
Loading file when gaw is running :
file/open + select your file
Drag&Drop : from your desktop or your Nautilus to a DrawingArea
Display wave when not already displayed :
Drag&Drop : from buttom in list window to a DrawingArea
or left click in a DrawingArea to select it and double left click on the
button in list window.
or Drag&Drop to area where X labels are displayed. This add a penel.
or Drag&Drop to Add Panel Button on MenuBar. This add a penel.
Display wave when already displayed : move
Drag&Drop : from wave buttom at left of DrawingAreas to a DrawingArea
Display wave when already displayed : copy
shift+Drag&Drop : from wave buttom at left of DrawingAreas to a DrawingArea
Remove displayed wave
select wave with left click on wave button and click delete wave.
or select wave with left click on wave button and right click in
DrawingArea and select delete wave.
or right click on wave button and select delete this wave.
or drag the wave button to the trash button (Delete wavein menuBar)
Set cursors in DrawingArea
left click set the first cursor
Middle click set the second cursor
Zoom in
left click Zoom in button in menu bar.
or zoom menu and select Zoom in.
or right click in DrawingArea and select Zoom in.
or Keyboard : "Z"
Zoom out
left click Zoom out button in menu bar.
or zoom menu and select Zoom out.
or right click in DrawingArea and select Zoom out.
or Keyboard : "<shift>Z"
Zoom a selected X area
set the 2 cursors and click Zoom Cursors in menu bar.
or right click in DrawingArea and select Zoom X... and
drag the left button on the area to zoom.
Zoom X undo
zoom menu and select Zoom X full.
or right click in DrawingArea and select Zoom X full.
or Keyboard : "<control>Z"
Zoom Y
right click in DrawingArea and select Zoom Y... and
drag the left button on the area to zoom.
Zoom Y undo
right click in DrawingArea and select Zoom Y full.
Zoom X+Y
Select Zoom X+Y... and
drag the left button on the area to zoom in DrawingArea.
Export to image file in one of the format available in Gtk
right click in DrawingArea and select Export to image.
Export data in some available formats
click File/Export Data in variable list window, enter the format and
filename.
usefull for users ? let me know. Anyway it is usefull for testing !!!
Save conf
save configuration in $HOME/.gaw/gawrc with the last used input filename
which becomes the default input file name.
next running gaw will reload this default file.
Clear def
save configuration in $HOME/.gaw/gawrc with clearing the default
input file name.
Multisweep :
Multisweep means generate a set of data for a different value of a
component. Only Hspice format supports multiweep. You can find an
example in the file examples/invsweep.tr0. So load the file and try
Right click on a button in the list window : y @... and select
Add all similar to selected. This will show al the waves for each
value of the component.
About data Formats
=================
In principle Gaw is able to recognize the implemented formats, but due to
the lack of definition in some format, it should be very easy to confuse Gaw.
So it is suggested to provide a format.
There are 2 ways to provide a format :
- setting the format in the menu for loading a file.
- giving an extension to your file.
The recognized extensions are :
.tr[0-9], .sw[0-9], .ac[0-9] for hspice
.B, .N, .W for cazm
.raw for spice3raw
.rawspice for spice2raw
.out for nsout
.wav for wav
.acd, .acs, .dat, .ascii for ascii
Requirements for Gaw
====================
Dependancies :
Alsa lib >= 1.0.16
gtk+-2.0 >= 2.10.0
Gaw is developped under Fedora But this does not mean, it should not work on
others distributions. Instead it means that if there are mistakes due to
distributions differences, I cannot see them, and you need to report them.
Compiled gaw 20100823:
========
Fedora 13
Linux olix 2.6.33.6-147.fc13.x86_64 #1 SMP Tue Jul 6 22:32:17 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux
GLIB library version: 2.24.1
GTK+ library version: 2.20.1
Alsa version: 1.0.23
data directory: /usr/local/share/gaw
locale directory: /usr/local/share/locale
Fedora 11
Linux rvix 2.6.29.6-217.2.8.fc11.i586 #1 SMP Sat Aug 15 00:44:39 EDT 2009 i686 athlon i386 GNU/Linux
GLIB library version: 2.20.5
GTK+ library version: 2.16.6
Alsa version: 1.0.21
data directory: /usr/local/share/gaw
locale directory: /usr/local/share/locale
Frugalware (ppc) :
Linux imac 2.6.32-fw3 #1 PREEMPT Fri May 7 10:52:40 CEST 2010 ppc GNU/Linux
GLIB library version: 2.22.4
GTK+ library version: 2.18.7
Alsa version: 1.0.22
data directory: /usr/local/share/gaw
locale directory: /usr/local/share/locale

141
acinclude.m4 Normal file
View File

@ -0,0 +1,141 @@
dnl Configure Paths for Alsa
dnl Some modifications by Richard Boulton <richard-alsa@tartarus.org>
dnl Christopher Lansdown <lansdoct@cs.alfred.edu>
dnl Jaroslav Kysela <perex@perex.cz>
dnl Last modification: $Id: alsa.m4,v 1.24 2004/09/15 18:48:07 tiwai Exp $
dnl AM_PATH_ALSA([MINIMUM-VERSION [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
dnl Test for libasound, and define ALSA_CFLAGS and ALSA_LIBS as appropriate.
dnl enables arguments --with-alsa-prefix=
dnl --with-alsa-enc-prefix=
dnl --disable-alsatest
dnl
dnl For backwards compatibility, if ACTION_IF_NOT_FOUND is not specified,
dnl and the alsa libraries are not found, a fatal AC_MSG_ERROR() will result.
dnl
AC_DEFUN([AM_PATH_ALSA],
[dnl Save the original CFLAGS, LDFLAGS, and LIBS
alsa_save_CFLAGS="$CFLAGS"
alsa_save_LDFLAGS="$LDFLAGS"
alsa_save_LIBS="$LIBS"
alsa_found=yes
dnl
dnl Get the cflags and libraries for alsa
dnl
AC_ARG_WITH(alsa-prefix,
[ --with-alsa-prefix=PFX Prefix where Alsa library is installed(optional)],
[alsa_prefix="$withval"], [alsa_prefix=""])
AC_ARG_WITH(alsa-inc-prefix,
[ --with-alsa-inc-prefix=PFX Prefix where include libraries are (optional)],
[alsa_inc_prefix="$withval"], [alsa_inc_prefix=""])
dnl FIXME: this is not yet implemented
AC_ARG_ENABLE(alsatest,
[ --disable-alsatest Do not try to compile and run a test Alsa program],
[enable_alsatest="$enableval"],
[enable_alsatest=yes])
dnl Add any special include directories
AC_MSG_CHECKING(for ALSA CFLAGS)
if test "$alsa_inc_prefix" != "" ; then
ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix"
CFLAGS="$CFLAGS -I$alsa_inc_prefix"
fi
AC_MSG_RESULT($ALSA_CFLAGS)
dnl add any special lib dirs
AC_MSG_CHECKING(for ALSA LDFLAGS)
if test "$alsa_prefix" != "" ; then
ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix"
LDFLAGS="$LDFLAGS $ALSA_LIBS"
fi
dnl add the alsa library
ALSA_LIBS="$ALSA_LIBS -lasound -lm -ldl -lpthread"
LIBS="$ALSA_LIBS $LIBS"
AC_MSG_RESULT($ALSA_LIBS)
dnl Check for a working version of libasound that is of the right version.
min_alsa_version=ifelse([$1], ,0.1.1,$1)
AC_MSG_CHECKING(for libasound headers version >= $min_alsa_version)
no_alsa=""
alsa_min_major_version=`echo $min_alsa_version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
alsa_min_minor_version=`echo $min_alsa_version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
alsa_min_micro_version=`echo $min_alsa_version | \
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
AC_LANG_SAVE
AC_LANG_C
AC_TRY_COMPILE([
#include <alsa/asoundlib.h>
], [
/* ensure backward compatibility */
#if !defined(SND_LIB_MAJOR) && defined(SOUNDLIB_VERSION_MAJOR)
#define SND_LIB_MAJOR SOUNDLIB_VERSION_MAJOR
#endif
#if !defined(SND_LIB_MINOR) && defined(SOUNDLIB_VERSION_MINOR)
#define SND_LIB_MINOR SOUNDLIB_VERSION_MINOR
#endif
#if !defined(SND_LIB_SUBMINOR) && defined(SOUNDLIB_VERSION_SUBMINOR)
#define SND_LIB_SUBMINOR SOUNDLIB_VERSION_SUBMINOR
#endif
# if(SND_LIB_MAJOR > $alsa_min_major_version)
exit(0);
# else
# if(SND_LIB_MAJOR < $alsa_min_major_version)
# error not present
# endif
# if(SND_LIB_MINOR > $alsa_min_minor_version)
exit(0);
# else
# if(SND_LIB_MINOR < $alsa_min_minor_version)
# error not present
# endif
# if(SND_LIB_SUBMINOR < $alsa_min_micro_version)
# error not present
# endif
# endif
# endif
exit(0);
],
[AC_MSG_RESULT(found.)],
[AC_MSG_RESULT(not present.)
ifelse([$3], , [AC_MSG_ERROR(Sufficiently new version of libasound not found.)])
alsa_found=no]
)
AC_LANG_RESTORE
dnl Now that we know that we have the right version, let's see if we have the library and not just the headers.
if test "x$enable_alsatest" = "xyes"; then
AC_CHECK_LIB([asound], [snd_ctl_open],,
[ifelse([$3], , [AC_MSG_ERROR(No linkable libasound was found.)])
alsa_found=no]
)
fi
if test "x$alsa_found" = "xyes" ; then
ifelse([$2], , :, [$2])
LIBS=`echo $LIBS | sed 's/-lasound//g'`
LIBS=`echo $LIBS | sed 's/ //'`
LIBS="-lasound $LIBS"
fi
if test "x$alsa_found" = "xno" ; then
ifelse([$3], , :, [$3])
CFLAGS="$alsa_save_CFLAGS"
LDFLAGS="$alsa_save_LDFLAGS"
LIBS="$alsa_save_LIBS"
ALSA_CFLAGS=""
ALSA_LIBS=""
fi
dnl That should be it. Now just export out symbols:
AC_SUBST(ALSA_CFLAGS)
AC_SUBST(ALSA_LIBS)
])

1468
aclocal.m4 vendored Normal file

File diff suppressed because it is too large Load Diff

347
compile Executable file
View File

@ -0,0 +1,347 @@
#! /bin/sh
# Wrapper for compilers which do not understand '-c -o'.
scriptversion=2012-10-14.11; # UTC
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# 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, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
nl='
'
# We need space, tab and new line, in precisely that order. Quoting is
# there to prevent tools from complaining about whitespace usage.
IFS=" "" $nl"
file_conv=
# func_file_conv build_file lazy
# Convert a $build file to $host form and store it in $file
# Currently only supports Windows hosts. If the determined conversion
# type is listed in (the comma separated) LAZY, no conversion will
# take place.
func_file_conv ()
{
file=$1
case $file in
/ | /[!/]*) # absolute file, and not a UNC file
if test -z "$file_conv"; then
# lazily determine how to convert abs files
case `uname -s` in
MINGW*)
file_conv=mingw
;;
CYGWIN*)
file_conv=cygwin
;;
*)
file_conv=wine
;;
esac
fi
case $file_conv/,$2, in
*,$file_conv,*)
;;
mingw/*)
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
;;
cygwin/*)
file=`cygpath -m "$file" || echo "$file"`
;;
wine/*)
file=`winepath -w "$file" || echo "$file"`
;;
esac
;;
esac
}
# func_cl_dashL linkdir
# Make cl look for libraries in LINKDIR
func_cl_dashL ()
{
func_file_conv "$1"
if test -z "$lib_path"; then
lib_path=$file
else
lib_path="$lib_path;$file"
fi
linker_opts="$linker_opts -LIBPATH:$file"
}
# func_cl_dashl library
# Do a library search-path lookup for cl
func_cl_dashl ()
{
lib=$1
found=no
save_IFS=$IFS
IFS=';'
for dir in $lib_path $LIB
do
IFS=$save_IFS
if $shared && test -f "$dir/$lib.dll.lib"; then
found=yes
lib=$dir/$lib.dll.lib
break
fi
if test -f "$dir/$lib.lib"; then
found=yes
lib=$dir/$lib.lib
break
fi
if test -f "$dir/lib$lib.a"; then
found=yes
lib=$dir/lib$lib.a
break
fi
done
IFS=$save_IFS
if test "$found" != yes; then
lib=$lib.lib
fi
}
# func_cl_wrapper cl arg...
# Adjust compile command to suit cl
func_cl_wrapper ()
{
# Assume a capable shell
lib_path=
shared=:
linker_opts=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
eat=1
case $2 in
*.o | *.[oO][bB][jJ])
func_file_conv "$2"
set x "$@" -Fo"$file"
shift
;;
*)
func_file_conv "$2"
set x "$@" -Fe"$file"
shift
;;
esac
;;
-I)
eat=1
func_file_conv "$2" mingw
set x "$@" -I"$file"
shift
;;
-I*)
func_file_conv "${1#-I}" mingw
set x "$@" -I"$file"
shift
;;
-l)
eat=1
func_cl_dashl "$2"
set x "$@" "$lib"
shift
;;
-l*)
func_cl_dashl "${1#-l}"
set x "$@" "$lib"
shift
;;
-L)
eat=1
func_cl_dashL "$2"
;;
-L*)
func_cl_dashL "${1#-L}"
;;
-static)
shared=false
;;
-Wl,*)
arg=${1#-Wl,}
save_ifs="$IFS"; IFS=','
for flag in $arg; do
IFS="$save_ifs"
linker_opts="$linker_opts $flag"
done
IFS="$save_ifs"
;;
-Xlinker)
eat=1
linker_opts="$linker_opts $2"
;;
-*)
set x "$@" "$1"
shift
;;
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
func_file_conv "$1"
set x "$@" -Tp"$file"
shift
;;
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
func_file_conv "$1" mingw
set x "$@" "$file"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -n "$linker_opts"; then
linker_opts="-link$linker_opts"
fi
exec "$@" $linker_opts
exit 1
}
eat=
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand '-c -o'.
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file 'INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
func_cl_wrapper "$@" # Doesn't return...
;;
esac
ofile=
cfile=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as 'compile cc -o foo foo.c'.
# So we strip '-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no '-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# '.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
# Create the lock directory.
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

1420
config.guess vendored Executable file

File diff suppressed because it is too large Load Diff

209
config.h.in Normal file
View File

@ -0,0 +1,209 @@
/* config.h.in. Generated from configure.ac by autoheader. */
/* Define to 1 if translation of program messages to the user's native
language is requested. */
#undef ENABLE_NLS
/* gaw data directory */
#undef GAWDATADIR
/* gaw's rc directory */
#undef GAWRCDIR
/* Package name for gettext */
#undef GETTEXT_PACKAGE
/* Define to 1 if you have the <alsa/mixer.h> header file. */
#undef HAVE_ALSA_MIXER_H
/* Define to 1 if you have the <alsa/pcm.h> header file. */
#undef HAVE_ALSA_PCM_H
/* Define to 1 if you have the <byteswap.h> header file. */
#undef HAVE_BYTESWAP_H
/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
CoreFoundation framework. */
#undef HAVE_CFLOCALECOPYCURRENT
/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
the CoreFoundation framework. */
#undef HAVE_CFPREFERENCESCOPYAPPVALUE
/* Define if the GNU dcgettext() function is already present or preinstalled.
*/
#undef HAVE_DCGETTEXT
/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */
#undef HAVE_DOPRNT
/* Define to 1 if you have the <endian.h> header file. */
#undef HAVE_ENDIAN_H
/* Define to 1 if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
/* Define to 1 if you have the <float.h> header file. */
#undef HAVE_FLOAT_H
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
#undef HAVE_FSEEKO
/* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT
/* If glib 2.28.x has been installed, define this */
#undef HAVE_GLIB
/* If gtk+ 3.00.x has been installed, define this */
#undef HAVE_GTK300
/* Define if you have the iconv() function and it works. */
#undef HAVE_ICONV
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the `asound' library (-lasound). */
#undef HAVE_LIBASOUND
/* Define to 1 if you have the <libkern/OSByteOrder.h> header file. */
#undef HAVE_LIBKERN_OSBYTEORDER_H
/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
to 0 otherwise. */
#undef HAVE_MALLOC
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the `mkdir' function. */
#undef HAVE_MKDIR
/* Define to 1 if you have the `pow' function. */
#undef HAVE_POW
/* Define to 1 if you have the `regcomp' function. */
#undef HAVE_REGCOMP
/* Define to 1 if `stat' has the bug that it succeeds when given the
zero-length file name argument. */
#undef HAVE_STAT_EMPTY_STRING_BUG
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the `strcasecmp' function. */
#undef HAVE_STRCASECMP
/* Define to 1 if you have the `strchr' function. */
#undef HAVE_STRCHR
/* Define to 1 if you have the `strcspn' function. */
#undef HAVE_STRCSPN
/* Define to 1 if you have the `strdup' function. */
#undef HAVE_STRDUP
/* Define to 1 if you have the `strerror' function. */
#undef HAVE_STRERROR
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the `strrchr' function. */
#undef HAVE_STRRCHR
/* Define to 1 if you have the `strspn' function. */
#undef HAVE_STRSPN
/* Define to 1 if you have the `strstr' function. */
#undef HAVE_STRSTR
/* Define to 1 if you have the <sys/endian.h> header file. */
#undef HAVE_SYS_ENDIAN_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to 1 if you have the `vprintf' function. */
#undef HAVE_VPRINTF
/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
slash. */
#undef LSTAT_FOLLOWS_SLASHED_SYMLINK
/* Gtk analog waveform viewer - tool for viewing analog data, such as the
output of Spice simulations */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Location of package locale files */
#undef PACKAGE_LOCALE_DIR
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the home page for this package. */
#undef PACKAGE_URL
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define to 1 if your <sys/time.h> declares `struct tm'. */
#undef TM_IN_SYS_TIME
/* Currently running version of gaw */
#undef VERSION
/* Enable large inode numbers on Mac OS X 10.5. */
#ifndef _DARWIN_USE_64_BIT_INODE
# define _DARWIN_USE_64_BIT_INODE 1
#endif
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS
/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
#undef _LARGEFILE_SOURCE
/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES
/* Define to empty if `const' does not conform to ANSI C. */
#undef const
/* Define to `__inline__' or `__inline' if that's what the C compiler
calls it, or to nothing if 'inline' is not supported under any name. */
#ifndef __cplusplus
#undef inline
#endif
/* Define to rpl_malloc if the replacement function should be used. */
#undef malloc
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t

672
config.rpath Executable file
View File

@ -0,0 +1,672 @@
#! /bin/sh
# Output a system dependent set of variables, describing how to set the
# run time search path of shared libraries in an executable.
#
# Copyright 1996-2010 Free Software Foundation, Inc.
# Taken from GNU libtool, 2001
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
# This file is free software; the Free Software Foundation gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# The first argument passed to this file is the canonical host specification,
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
# should be set by the caller.
#
# The set of defined variables is at the end of this script.
# Known limitations:
# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
# than 256 bytes, otherwise the compiler driver will dump core. The only
# known workaround is to choose shorter directory names for the build
# directory and/or the installation directory.
# All known linkers require a `.a' archive for static linking (except MSVC,
# which needs '.lib').
libext=a
shrext=.so
host="$1"
host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
# Code taken from libtool.m4's _LT_CC_BASENAME.
for cc_temp in $CC""; do
case $cc_temp in
compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
\-*) ;;
*) break;;
esac
done
cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
# Code taken from libtool.m4's _LT_COMPILER_PIC.
wl=
if test "$GCC" = yes; then
wl='-Wl,'
else
case "$host_os" in
aix*)
wl='-Wl,'
;;
darwin*)
case $cc_basename in
xlc*)
wl='-Wl,'
;;
esac
;;
mingw* | cygwin* | pw32* | os2* | cegcc*)
;;
hpux9* | hpux10* | hpux11*)
wl='-Wl,'
;;
irix5* | irix6* | nonstopux*)
wl='-Wl,'
;;
newsos6)
;;
linux* | k*bsd*-gnu)
case $cc_basename in
ecc*)
wl='-Wl,'
;;
icc* | ifort*)
wl='-Wl,'
;;
lf95*)
wl='-Wl,'
;;
pgcc | pgf77 | pgf90)
wl='-Wl,'
;;
ccc*)
wl='-Wl,'
;;
como)
wl='-lopt='
;;
*)
case `$CC -V 2>&1 | sed 5q` in
*Sun\ C*)
wl='-Wl,'
;;
esac
;;
esac
;;
osf3* | osf4* | osf5*)
wl='-Wl,'
;;
rdos*)
;;
solaris*)
wl='-Wl,'
;;
sunos4*)
wl='-Qoption ld '
;;
sysv4 | sysv4.2uw2* | sysv4.3*)
wl='-Wl,'
;;
sysv4*MP*)
;;
sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
wl='-Wl,'
;;
unicos*)
wl='-Wl,'
;;
uts4*)
;;
esac
fi
# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
hardcode_libdir_flag_spec=
hardcode_libdir_separator=
hardcode_direct=no
hardcode_minus_L=no
case "$host_os" in
cygwin* | mingw* | pw32* | cegcc*)
# FIXME: the MSVC++ port hasn't been tested in a loooong time
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
if test "$GCC" != yes; then
with_gnu_ld=no
fi
;;
interix*)
# we just hope/assume this is gcc and not c89 (= MSVC++)
with_gnu_ld=yes
;;
openbsd*)
with_gnu_ld=no
;;
esac
ld_shlibs=yes
if test "$with_gnu_ld" = yes; then
# Set some defaults for GNU ld with shared library support. These
# are reset later if shared libraries are not supported. Putting them
# here allows them to be overridden if necessary.
# Unlike libtool, we use -rpath here, not --rpath, since the documented
# option of GNU ld is called -rpath, not --rpath.
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
case "$host_os" in
aix[3-9]*)
# On AIX/PPC, the GNU linker is very broken
if test "$host_cpu" != ia64; then
ld_shlibs=no
fi
;;
amigaos*)
hardcode_libdir_flag_spec='-L$libdir'
hardcode_minus_L=yes
# Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
# that the semantics of dynamic libraries on AmigaOS, at least up
# to version 4, is to share data among multiple programs linked
# with the same dynamic library. Since this doesn't match the
# behavior of shared libraries on other platforms, we cannot use
# them.
ld_shlibs=no
;;
beos*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
cygwin* | mingw* | pw32* | cegcc*)
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
hardcode_libdir_flag_spec='-L$libdir'
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
interix[3-9]*)
hardcode_direct=no
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
;;
gnu* | linux* | k*bsd*-gnu)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
netbsd*)
;;
solaris*)
if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
ld_shlibs=no
elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
case `$LD -v 2>&1` in
*\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
ld_shlibs=no
;;
*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
else
ld_shlibs=no
fi
;;
esac
;;
sunos4*)
hardcode_direct=yes
;;
*)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
:
else
ld_shlibs=no
fi
;;
esac
if test "$ld_shlibs" = no; then
hardcode_libdir_flag_spec=
fi
else
case "$host_os" in
aix3*)
# Note: this linker hardcodes the directories in LIBPATH if there
# are no directories specified by -L.
hardcode_minus_L=yes
if test "$GCC" = yes; then
# Neither direct hardcoding nor static linking is supported with a
# broken collect2.
hardcode_direct=unsupported
fi
;;
aix[4-9]*)
if test "$host_cpu" = ia64; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
aix_use_runtimelinking=no
else
aix_use_runtimelinking=no
# Test if we are trying to use run time linking or normal
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
# need to do runtime linking.
case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
for ld_flag in $LDFLAGS; do
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
aix_use_runtimelinking=yes
break
fi
done
;;
esac
fi
hardcode_direct=yes
hardcode_libdir_separator=':'
if test "$GCC" = yes; then
case $host_os in aix4.[012]|aix4.[012].*)
collect2name=`${CC} -print-prog-name=collect2`
if test -f "$collect2name" && \
strings "$collect2name" | grep resolve_lib_name >/dev/null
then
# We have reworked collect2
:
else
# We have old collect2
hardcode_direct=unsupported
hardcode_minus_L=yes
hardcode_libdir_flag_spec='-L$libdir'
hardcode_libdir_separator=
fi
;;
esac
fi
# Begin _LT_AC_SYS_LIBPATH_AIX.
echo 'int main () { return 0; }' > conftest.c
${CC} ${LDFLAGS} conftest.c -o conftest
aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
if test -z "$aix_libpath"; then
aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
}'`
fi
if test -z "$aix_libpath"; then
aix_libpath="/usr/lib:/lib"
fi
rm -f conftest.c conftest
# End _LT_AC_SYS_LIBPATH_AIX.
if test "$aix_use_runtimelinking" = yes; then
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
else
if test "$host_cpu" = ia64; then
hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
else
hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
fi
fi
;;
amigaos*)
hardcode_libdir_flag_spec='-L$libdir'
hardcode_minus_L=yes
# see comment about different semantics on the GNU ld section
ld_shlibs=no
;;
bsdi[45]*)
;;
cygwin* | mingw* | pw32* | cegcc*)
# When not using gcc, we currently assume that we are using
# Microsoft Visual C++.
# hardcode_libdir_flag_spec is actually meaningless, as there is
# no search path for DLLs.
hardcode_libdir_flag_spec=' '
libext=lib
;;
darwin* | rhapsody*)
hardcode_direct=no
if test "$GCC" = yes ; then
:
else
case $cc_basename in
xlc*)
;;
*)
ld_shlibs=no
;;
esac
fi
;;
dgux*)
hardcode_libdir_flag_spec='-L$libdir'
;;
freebsd1*)
ld_shlibs=no
;;
freebsd2.2*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
;;
freebsd2*)
hardcode_direct=yes
hardcode_minus_L=yes
;;
freebsd* | dragonfly*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
;;
hpux9*)
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
hardcode_libdir_separator=:
hardcode_direct=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
hardcode_minus_L=yes
;;
hpux10*)
if test "$with_gnu_ld" = no; then
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
hardcode_libdir_separator=:
hardcode_direct=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
hardcode_minus_L=yes
fi
;;
hpux11*)
if test "$with_gnu_ld" = no; then
hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
hardcode_libdir_separator=:
case $host_cpu in
hppa*64*|ia64*)
hardcode_direct=no
;;
*)
hardcode_direct=yes
# hardcode_minus_L: Not really in the search PATH,
# but as the default location of the library.
hardcode_minus_L=yes
;;
esac
fi
;;
irix5* | irix6* | nonstopux*)
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
netbsd*)
hardcode_libdir_flag_spec='-R$libdir'
hardcode_direct=yes
;;
newsos6)
hardcode_direct=yes
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
openbsd*)
if test -f /usr/libexec/ld.so; then
hardcode_direct=yes
if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
else
case "$host_os" in
openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
hardcode_libdir_flag_spec='-R$libdir'
;;
*)
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
;;
esac
fi
else
ld_shlibs=no
fi
;;
os2*)
hardcode_libdir_flag_spec='-L$libdir'
hardcode_minus_L=yes
;;
osf3*)
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
hardcode_libdir_separator=:
;;
osf4* | osf5*)
if test "$GCC" = yes; then
hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
else
# Both cc and cxx compiler support -rpath directly
hardcode_libdir_flag_spec='-rpath $libdir'
fi
hardcode_libdir_separator=:
;;
solaris*)
hardcode_libdir_flag_spec='-R$libdir'
;;
sunos4*)
hardcode_libdir_flag_spec='-L$libdir'
hardcode_direct=yes
hardcode_minus_L=yes
;;
sysv4)
case $host_vendor in
sni)
hardcode_direct=yes # is this really true???
;;
siemens)
hardcode_direct=no
;;
motorola)
hardcode_direct=no #Motorola manual says yes, but my tests say they lie
;;
esac
;;
sysv4.3*)
;;
sysv4*MP*)
if test -d /usr/nec; then
ld_shlibs=yes
fi
;;
sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
;;
sysv5* | sco3.2v5* | sco5v6*)
hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
hardcode_libdir_separator=':'
;;
uts4*)
hardcode_libdir_flag_spec='-L$libdir'
;;
*)
ld_shlibs=no
;;
esac
fi
# Check dynamic linker characteristics
# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
# Unlike libtool.m4, here we don't care about _all_ names of the library, but
# only about the one the linker finds when passed -lNAME. This is the last
# element of library_names_spec in libtool.m4, or possibly two of them if the
# linker has special search rules.
library_names_spec= # the last element of library_names_spec in libtool.m4
libname_spec='lib$name'
case "$host_os" in
aix3*)
library_names_spec='$libname.a'
;;
aix[4-9]*)
library_names_spec='$libname$shrext'
;;
amigaos*)
library_names_spec='$libname.a'
;;
beos*)
library_names_spec='$libname$shrext'
;;
bsdi[45]*)
library_names_spec='$libname$shrext'
;;
cygwin* | mingw* | pw32* | cegcc*)
shrext=.dll
library_names_spec='$libname.dll.a $libname.lib'
;;
darwin* | rhapsody*)
shrext=.dylib
library_names_spec='$libname$shrext'
;;
dgux*)
library_names_spec='$libname$shrext'
;;
freebsd1*)
;;
freebsd* | dragonfly*)
case "$host_os" in
freebsd[123]*)
library_names_spec='$libname$shrext$versuffix' ;;
*)
library_names_spec='$libname$shrext' ;;
esac
;;
gnu*)
library_names_spec='$libname$shrext'
;;
hpux9* | hpux10* | hpux11*)
case $host_cpu in
ia64*)
shrext=.so
;;
hppa*64*)
shrext=.sl
;;
*)
shrext=.sl
;;
esac
library_names_spec='$libname$shrext'
;;
interix[3-9]*)
library_names_spec='$libname$shrext'
;;
irix5* | irix6* | nonstopux*)
library_names_spec='$libname$shrext'
case "$host_os" in
irix5* | nonstopux*)
libsuff= shlibsuff=
;;
*)
case $LD in
*-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
*-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
*-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
*) libsuff= shlibsuff= ;;
esac
;;
esac
;;
linux*oldld* | linux*aout* | linux*coff*)
;;
linux* | k*bsd*-gnu)
library_names_spec='$libname$shrext'
;;
knetbsd*-gnu)
library_names_spec='$libname$shrext'
;;
netbsd*)
library_names_spec='$libname$shrext'
;;
newsos6)
library_names_spec='$libname$shrext'
;;
nto-qnx*)
library_names_spec='$libname$shrext'
;;
openbsd*)
library_names_spec='$libname$shrext$versuffix'
;;
os2*)
libname_spec='$name'
shrext=.dll
library_names_spec='$libname.a'
;;
osf3* | osf4* | osf5*)
library_names_spec='$libname$shrext'
;;
rdos*)
;;
solaris*)
library_names_spec='$libname$shrext'
;;
sunos4*)
library_names_spec='$libname$shrext$versuffix'
;;
sysv4 | sysv4.3*)
library_names_spec='$libname$shrext'
;;
sysv4*MP*)
library_names_spec='$libname$shrext'
;;
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
library_names_spec='$libname$shrext'
;;
uts4*)
library_names_spec='$libname$shrext'
;;
esac
sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
# How to pass a linker flag through the compiler.
wl="$escaped_wl"
# Static library suffix (normally "a").
libext="$libext"
# Shared library suffix (normally "so").
shlibext="$shlibext"
# Format of library name prefix.
libname_spec="$escaped_libname_spec"
# Library names that the linker finds when passed -lNAME.
library_names_spec="$escaped_library_names_spec"
# Flag to hardcode \$libdir into a binary during linking.
# This must work even if \$libdir does not exist.
hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
# Whether we need a single -rpath flag with a separated argument.
hardcode_libdir_separator="$hardcode_libdir_separator"
# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
# resulting binary.
hardcode_direct="$hardcode_direct"
# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
# resulting binary.
hardcode_minus_L="$hardcode_minus_L"
EOF

1798
config.sub vendored Executable file

File diff suppressed because it is too large Load Diff

9747
configure vendored Executable file

File diff suppressed because it is too large Load Diff

197
configure.ac Normal file
View File

@ -0,0 +1,197 @@
dnl **** Process this file with autoconf to produce a configure script.
dnl *** Remember [] is the quoting mechanism of m4
AC_PREREQ(2.61)
AC_INIT([gaw3], [1.0], [www.rvq.fr])
AC_CONFIG_SRCDIR([src/gawmain.c])
AM_INIT_AUTOMAKE
AC_CONFIG_HEADER([config.h])
AC_PREFIX_DEFAULT("/usr/local")
AC_DEFINE([PACKAGE], [gaw], [Gtk analog waveform viewer - tool for viewing analog data, such as the output of Spice simulations])
PACKAGE=gaw3
VERSION=20220315
echo Configuring $PACKAGE version $VERSION
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
AC_SUBST(PACKAGE)
AC_SUBST(VERSION)
# Checks for programs.
AC_PROG_CC
AM_CONDITIONAL(CCISGCC, test "$GCC" = "yes")
AC_PROG_RANLIB
AC_PROG_MKDIR_P
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([fcntl.h float.h stdlib.h string.h unistd.h])
AC_SYS_LARGEFILE
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_STRUCT_TM
# Checks for library functions.
AC_FUNC_MALLOC
AC_FUNC_MEMCMP
AC_FUNC_STAT
AC_FUNC_STRTOD
AC_FUNC_VPRINTF
AC_FUNC_FSEEKO
AC_CHECK_FUNCS([mkdir pow regcomp strcasecmp strchr strcspn strdup strerror strrchr strspn strstr])
############################################################################
# Check for pkg-config
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
if test $PKG_CONFIG = no; then
AC_MSG_ERROR([Cannot find pkg-config, make sure it is installed and in your PATH])
fi
############################################################################
# Check for byteswap.h
AC_CHECK_HEADERS([byteswap.h])
AC_CHECK_HEADERS([endian.h])
AC_CHECK_HEADERS([libkern/OSByteOrder.h])
AC_CHECK_HEADERS([sys/endian.h])
############################################################################
dnl ****** INTERNATIONALIZATION **********************
GETTEXT_PACKAGE=$PACKAGE
AC_SUBST(GETTEXT_PACKAGE)
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Package name for gettext])
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.18.1])
dnl Set PACKAGE_LOCALE_DIR in config.h.
if test "x${prefix}" = "xNONE"; then
prefix=${ac_default_prefix}
fi
DATADIRNAME=share
AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${prefix}/${DATADIRNAME}/locale", [Location of package locale files])
############################################################################
# Check for alsa libs
#
AC_CHECK_HEADERS([alsa/pcm.h], [have_pcm="yes"], [have_pcm="no"],
[#include <alsa/asoundlib.h>])
AC_CHECK_HEADERS([alsa/mixer.h], [have_mixer="yes"], [have_mixer="no"],
[#include <alsa/asoundlib.h>])
AC_ARG_ENABLE(gawsound,
[ --enable-gawsound=[yes/no] Turn on or off compilation of alsa libs interface [default=yes]],
[case "${enableval}" in
yes) gawsound=true ;;
no) gawsound=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-gawsound) ;;
esac],[gawsound=true])
if test "$have_pcm" = "yes" -a "$have_mixer" = "yes" ; then
if test "$gawsound" = "true" ; then
AM_PATH_ALSA(1.0.16)
dnl Check components
ALSA_VERSION=`$PKG_CONFIG alsa --modversion`
else
echo "Alsa libs interface compilation is disabled."
fi
else
if test "$gawsound" = "true" ; then
echo "Alsa libs interface compilation is disabled."
fi
fi
############################################################################
# Check for gtk+ 3.0 start
#
PKG_CHECK_MODULES(GTK300, gtk+-3.0 >= 3.0.0, GTK300="yes", no_GTK300="yes")
# This next bit of code figures out what gtk we need to use.
if test "$GTK300" = "yes"
then
AC_DEFINE(HAVE_GTK300, 1, [If gtk+ 3.00.x has been installed, define this])
GTK_CFLAGS=$GTK300_CFLAGS
GTK_LIBS=$GTK300_LIBS
GTK_VERSION=`$PKG_CONFIG gtk+-3.0 --modversion`
# Search for glib
PKG_CHECK_MODULES(GLIB228, glib-2.0 >= 2.28.0, GLIB228="yes", no_GLIB228="yes")
if test "$GLIB228" != "yes"
then
AC_MSG_ERROR([Cannot find glib 2.28.x, install it and rerun ./configure.])
fi
AC_DEFINE(HAVE_GLIB, 1, [If glib 2.28.x has been installed, define this])
GLIB_CFLAGS=$GLIB228_CFLAGS
GLIB_LIBS=$GLIB228_LIBS
GLIB_VERSION=`$PKG_CONFIG glib-2.0 --modversion`
else
GTK_VERSION=""
fi
if test "$GTK_VERSION" = ""
then
AC_MSG_ERROR([Cannot find gtk+ 3.x or later, please install gtk+.])
fi
#
# Check for gtk+ 3.0 end
############################################################################
# Finally create the final CFLAGS and LDFLAGS for use in the makefiles
GAW_CFLAGS="$GTK_CFLAGS"
GAW_LDFLAGS="$GTK_LIBS"
# Expand the prefix variable
if eval "test x$prefix = xNONE"; then
dprefix=$ac_default_prefix
else
dprefix=$prefix
fi
DATADIR=gaw
gawtopdir=$dprefix/share/$DATADIR
GAWRCDIR=$gawtopdir
# this has to be expanded ( no ${prefix} ) --
AC_DEFINE_UNQUOTED(GAWDATADIR, "$gawtopdir", [gaw data directory])
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Currently running version of gaw])
AC_DEFINE_UNQUOTED(GAWRCDIR, "$gawtopdir", [gaw's rc directory])
# Makefile.in variable substitution
AC_SUBST(GAW_CFLAGS)
AC_SUBST(GAW_LDFLAGS)
AC_SUBST(GAWRCDIR)
# Create all the necessary derived files
AC_CONFIG_FILES([Makefile src/Makefile lib/Makefile po/Makefile.in])
AC_OUTPUT
expandedGAWDATADIR=`eval "echo $gawtopdir"`
expandedGAWRCDIR=`eval "echo $gawtopdir"`
expandedGAWLOCALE=`eval "echo ${prefix}/${DATADIRNAME}/locale"`
AC_MSG_RESULT([
** Configuration summary for $PACKAGE $VERSION:
GLIB library version: $GLIB_VERSION
GTK+ library version: $GTK_VERSION
Alsa version: $ALSA_VERSION
data directory: $expandedGAWDATADIR
locale directory: $expandedGAWLOCALE
])

37
contrib/gaw3.spec Normal file
View File

@ -0,0 +1,37 @@
Name: gaw3
Version: 20170716
Release: 1%{?dist}
Summary: Gtk Analog Wave viewer
License: GPL
URL: http://www.rvq.fr/linux/gaw.php
Source0: gaw3-20170716.tar.gz
#BuildRequires:
#Requires:
%description
%prep
%setup -q
%build
%configure
make %{?_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
%make_install
%files
%doc
%{_bindir}/*
/usr/share
%changelog

Binary file not shown.

10
contrib/voidlinux/Readme Normal file
View File

@ -0,0 +1,10 @@
Void Linux package generation with xbps-src
1 - download void-packages with git
2 - read Manual.md
3 - copy the directoy srcpkgs to void-packages
4 - modify the checksum= in the void-packages/srcpkgs/gaw3/template
you get the checksum with sha256sum gaw3-20220315.tar.gz or
from the file gaw3-20220315.tar.gz.sum
5 compile the package with:
./xbps-src pkg gaw3

View File

@ -0,0 +1,14 @@
# Template file for 'gaw3'
pkgname=gaw3
version=20220315
revision=2
build_style=gnu-configure
# configure_args=""
makedepends="gtk+3-devel alsa-lib-devel"
hostmakedepends="pkg-config"
short_desc="Gtk analog waveform viewer - tool for viewing analog data"
maintainer="Juan RP <xtraeme@voidlinux.eu>"
license="GPL-2"
homepage="http://www.rvq.fr/linux/gaw.php"
distfiles="http://download.tuxfamily.org/gaw/download/gaw3-${version}.tar.gz"
checksum="d27e82a2a62e5e40dcff0da51b7cf3105232ee7b9a9e852b99310e4f7a469b01"

791
depcomp Executable file
View File

@ -0,0 +1,791 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2013-05-30.07; # UTC
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
# 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, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try '$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by 'PROGRAMS ARGS'.
object Object file output by 'PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputting dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
# Get the directory component of the given path, and save it in the
# global variables '$dir'. Note that this directory component will
# be either empty or ending with a '/' character. This is deliberate.
set_dir_from ()
{
case $1 in
*/*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
*) dir=;;
esac
}
# Get the suffix-stripped basename of the given path, and save it the
# global variable '$base'.
set_base_from ()
{
base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
}
# If no dependency file was actually created by the compiler invocation,
# we still have to create a dummy depfile, to avoid errors with the
# Makefile "include basename.Plo" scheme.
make_dummy_depfile ()
{
echo "#dummy" > "$depfile"
}
# Factor out some common post-processing of the generated depfile.
# Requires the auxiliary global variable '$tmpdepfile' to be set.
aix_post_process_depfile ()
{
# If the compiler actually managed to produce a dependency file,
# post-process it.
if test -f "$tmpdepfile"; then
# Each line is of the form 'foo.o: dependency.h'.
# Do two passes, one to just change these to
# $object: dependency.h
# and one to simply output
# dependency.h:
# which is needed to avoid the deleted-header problem.
{ sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
} > "$depfile"
rm -f "$tmpdepfile"
else
make_dummy_depfile
fi
}
# A tabulation character.
tab=' '
# A newline character.
nl='
'
# Character ranges might be problematic outside the C locale.
# These definitions help.
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
lower=abcdefghijklmnopqrstuvwxyz
digits=0123456789
alpha=${upper}${lower}
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Avoid interferences from the environment.
gccflag= dashmflag=
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
cygpath_u="cygpath -u -f -"
if test "$depmode" = msvcmsys; then
# This is just like msvisualcpp but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u='sed s,\\\\,/,g'
depmode=msvisualcpp
fi
if test "$depmode" = msvc7msys; then
# This is just like msvc7 but w/o cygpath translation.
# Just convert the backslash-escaped backslashes to single forward
# slashes to satisfy depend.m4
cygpath_u='sed s,\\\\,/,g'
depmode=msvc7
fi
if test "$depmode" = xlc; then
# IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
gccflag=-qmakedep=gcc,-MF
depmode=gcc
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
## (see the conditional assignment to $gccflag above).
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say). Also, it might not be
## supported by the other compilers which use the 'gcc' depmode.
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
# The second -e expression handles DOS-style file names with drive
# letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the "deleted header file" problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
## Some versions of gcc put a space before the ':'. On the theory
## that the space means something, we add a space to the output as
## well. hp depmode also adds that space, but also prefixes the VPATH
## to the object. Take care to not repeat it in the output.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like '#:fec' to the end of the
# dependency line.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
| tr "$nl" ' ' >> "$depfile"
echo >> "$depfile"
# The second pass generates a dummy entry for each header file.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> "$depfile"
else
make_dummy_depfile
fi
rm -f "$tmpdepfile"
;;
xlc)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts '$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
set_dir_from "$object"
set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.u
tmpdepfile2=$base.u
tmpdepfile3=$dir.libs/$base.u
"$@" -Wc,-M
else
tmpdepfile1=$dir$base.u
tmpdepfile2=$dir$base.u
tmpdepfile3=$dir$base.u
"$@" -M
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
aix_post_process_depfile
;;
tcc)
# tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
# FIXME: That version still under development at the moment of writing.
# Make that this statement remains true also for stable, released
# versions.
# It will wrap lines (doesn't matter whether long or short) with a
# trailing '\', as in:
#
# foo.o : \
# foo.c \
# foo.h \
#
# It will put a trailing '\' even on the last line, and will use leading
# spaces rather than leading tabs (at least since its commit 0394caf7
# "Emit spaces for -MD").
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
# We have to change lines of the first kind to '$object: \'.
sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
# And for each line of the second kind, we have to emit a 'dep.h:'
# dummy dependency, to avoid the deleted-header problem.
sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
rm -f "$tmpdepfile"
;;
## The order of this option in the case statement is important, since the
## shell code in configure will try each of these formats in the order
## listed in this file. A plain '-MD' option would be understood by many
## compilers, so we must ensure this comes after the gcc and icc options.
pgcc)
# Portland's C compiler understands '-MD'.
# Will always output deps to 'file.d' where file is the root name of the
# source file under compilation, even if file resides in a subdirectory.
# The object file name does not affect the name of the '.d' file.
# pgcc 10.2 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using '\' :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
set_dir_from "$object"
# Use the source, not the object, to determine the base name, since
# that's sadly what pgcc will do too.
set_base_from "$source"
tmpdepfile=$base.d
# For projects that build the same source file twice into different object
# files, the pgcc approach of using the *source* file root name can cause
# problems in parallel builds. Use a locking strategy to avoid stomping on
# the same $tmpdepfile.
lockdir=$base.d-lock
trap "
echo '$0: caught signal, cleaning up...' >&2
rmdir '$lockdir'
exit 1
" 1 2 13 15
numtries=100
i=$numtries
while test $i -gt 0; do
# mkdir is a portable test-and-set.
if mkdir "$lockdir" 2>/dev/null; then
# This process acquired the lock.
"$@" -MD
stat=$?
# Release the lock.
rmdir "$lockdir"
break
else
# If the lock is being held by a different process, wait
# until the winning process is done or we timeout.
while test -d "$lockdir" && test $i -gt 0; do
sleep 1
i=`expr $i - 1`
done
fi
i=`expr $i - 1`
done
trap - 1 2 13 15
if test $i -le 0; then
echo "$0: failed to acquire lock after $numtries attempts" >&2
echo "$0: check lockdir '$lockdir'" >&2
exit 1
fi
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
set_dir_from "$object"
set_base_from "$object"
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
# Add 'dependent.h:' lines.
sed -ne '2,${
s/^ *//
s/ \\*$//
s/$/:/
p
}' "$tmpdepfile" >> "$depfile"
else
make_dummy_depfile
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in 'foo.d' instead, so we check for that too.
# Subdirectories are respected.
set_dir_from "$object"
set_base_from "$object"
if test "$libtool" = yes; then
# Libtool generates 2 separate objects for the 2 libraries. These
# two compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir$base.o.d # libtool 1.5
tmpdepfile2=$dir.libs/$base.o.d # Likewise.
tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -ne 0; then
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
do
test -f "$tmpdepfile" && break
done
# Same post-processing that is required for AIX mode.
aix_post_process_depfile
;;
msvc7)
if test "$libtool" = yes; then
showIncludes=-Wc,-showIncludes
else
showIncludes=-showIncludes
fi
"$@" $showIncludes > "$tmpdepfile"
stat=$?
grep -v '^Note: including file: ' "$tmpdepfile"
if test $stat -ne 0; then
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
# The first sed program below extracts the file names and escapes
# backslashes for cygpath. The second sed program outputs the file
# name when reading, but also accumulates all include files in the
# hold buffer in order to output them again at the end. This only
# works with sed implementations that can handle large buffers.
sed < "$tmpdepfile" -n '
/^Note: including file: *\(.*\)/ {
s//\1/
s/\\/\\\\/g
p
}' | $cygpath_u | sort -u | sed -n '
s/ /\\ /g
s/\(.*\)/'"$tab"'\1 \\/p
s/.\(.*\) \\/\1:/
H
$ {
s/.*/'"$tab"'/
G
p
}' >> "$depfile"
echo >> "$depfile" # make sure the fragment doesn't end with a backslash
rm -f "$tmpdepfile"
;;
msvc7msys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove '-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for ':'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
"$@" $dashmflag |
sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this sed invocation
# correctly. Breaking it into two sed invocations is a workaround.
tr ' ' "$nl" < "$tmpdepfile" \
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no eat=no
for arg
do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
if test $eat = yes; then
eat=no
continue
fi
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-arch)
eat=yes ;;
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix=`echo "$object" | sed 's/^.*\././'`
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
# makedepend may prepend the VPATH from the source file name to the object.
# No need to regex-escape $object, excess matching of '.' is harmless.
sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process the last invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed '1,2d' "$tmpdepfile" \
| tr ' ' "$nl" \
| sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
| sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
# Remove '-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E \
| sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
| sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test "X$1" != 'X--mode=compile'; do
shift
done
shift
fi
IFS=" "
for arg
do
case "$arg" in
-o)
shift
;;
$object)
shift
;;
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E 2>/dev/null |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
echo "$tab" >> "$depfile"
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvcmsys)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

30
doc/Compiled Normal file
View File

@ -0,0 +1,30 @@
Compiled gaw 20100823:
========
Fedora 13
Linux olix 2.6.33.6-147.fc13.x86_64 #1 SMP Tue Jul 6 22:32:17 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux
GLIB library version: 2.24.1
GTK+ library version: 2.20.1
Alsa version: 1.0.23
data directory: /usr/local/share/gaw
locale directory: /usr/local/share/locale
Fedora 11
Linux rvix 2.6.29.6-217.2.8.fc11.i586 #1 SMP Sat Aug 15 00:44:39 EDT 2009 i686 athlon i386 GNU/Linux
GLIB library version: 2.20.5
GTK+ library version: 2.16.6
Alsa version: 1.0.21
data directory: /usr/local/share/gaw
locale directory: /usr/local/share/locale
Frugalware (ppc) :
Linux imac 2.6.32-fw3 #1 PREEMPT Fri May 7 10:52:40 CEST 2010 ppc GNU/Linux
GLIB library version: 2.22.4
GTK+ library version: 2.18.7
Alsa version: 1.0.22
data directory: /usr/local/share/gaw
locale directory: /usr/local/share/locale

18
doc/Readme.stest Normal file
View File

@ -0,0 +1,18 @@
Stest is a simple tool to test the functions is this directory, but
can be used to convert between formats.
To compile :
cd lib
make -f stest.mak
For command line options:
stest -h
Running example to convert spice3 format to ascii
stest -rf spice3raw -wf ascii -o myfile ../examples/Spice3a
Listing available formats:
stest -rl
stest -wl

37
doc/Sizing Normal file
View File

@ -0,0 +1,37 @@
Some notes about sizing the panels of gaw.
First of all and ony once, gaw needs to determine the value of the variable
max_ps_y in the configuration file $HOME/.gaw/gawrc, if this value is 0. And
this value is 0 after a reset to factory settings and after a first install.
This variable is used to determine the size of view port of the panel scrolled
window.
The panel scrolled window can be considered as 2 port: the view port which
stands on the screen and the virtual port that contains panels. When the
the virtual port is larger than the view port the scroll bar is shown.
Gaw, in function of the number of panels and the panel height, i.e. value of
panelHeight variable in $HOME/.gaw/gawrc, calculate the width and height value
of the main window and the height of the virtual port and then set these
values. In the case of the virtual port, the size is to be considered as a
minimal size.
In normal running, a user may chang the size of the main window by dragging
one of the corners of the main window. As a result, the size of the view
port is changed, it takes the size allocated by the main window.
The virtual port expands if you give more room and do not
change if you try to shrink because you have reached the minimal value. In
the first case the panel size expands, but not in the second case.
A growed panel size is stable. If you add or remove a panel, the size is
recalculated with the value of panelHeight variable as explained before.
But if growing is what you want, you can save the configuration file and this
change value of panelHeight. But this do not giwe a way to lower the
panelHeight.
To day, the only way is to edit the configuration file once and do not change
it. Another way could be to create a menu entry to set panelHeight to the
minimal value. Then the user can then grow it. Another way could be to let
the user enter his prefered size in a specific window... The subject is open.

23
doc/config Normal file
View File

@ -0,0 +1,23 @@
Gaw configuration files
======================
Gaw uses 2 configuration files.
The first one is specific to Gtk objects and is mandatory. A copy of it can
be found in the directory GAWRCDIR (/usr/local/share/gaw) after installation.
The contents of this file can be overriden by an instance of the file
$HOME/.gaw/gaw-gtkrc where users are invited to put their preferences.
Info on the content an syntax of this file can be found
in GTK+ Reference Manual : Resource Files.
This file define colors for cursors, wave buttons, waves, DrawingAreas in
wavePanel, statusBar. Keep in mind that changing a color may imply others
changes. For example changing the DrawingArea background to white, will imply
changing the hightlight and srange color and may be the cursor color to make
then visible.
The second deals with application itself and is automaticaly created in the
file $HOME/.gaw/gawrc at first startup. Some variables can be changed from
inside the application, but others require that you use your favorite
text editor.

42
doc/dataModel Normal file
View File

@ -0,0 +1,42 @@
GAW data model
DATASET
Central object for data storage is dataset.c dataset.h.
User datas come, in general, as a form of a set of n variables, each variable
carryng m rows of datas. The first one should be the independant variable
and the other the dependant varaibles.
A variable may have more than one column.
A variable is stored in a structure WaveVar. Each pointer to WaveVar is stored
in a GPtrArray hold by dataset itself.
Gaw stores each column in a auto growing Glib GArray. The size of each entry
in Garray is size of double.
Each pointer to GArray is stored in a GPtrArray hold by dataset itself.
GArray and and GPtrArray are Glib objects. They are auto growing, so rhe
developper don't need to take care of the size of data. The only constraint is
variable and data must feed in from column 0 to column n and so from row 0 to
row m.
Accessing the data in done with the function dataset_val_get()
double dataset_val_get(WDataSet *wds, int row, int col )
{
GArray *ary = g_ptr_array_index( wds->datas, col );
double *val = &g_array_index (ary, double, row );
return *val;
}
WAVETABLE
User data can have more than one dataset . so these datasets are stored in a
GPtrArray hold by WaveTable.
SPICESTREAM
spicestream and its helper functions is an object to read data from file
and store them in dataset. The input file may have different formats.
SNDSTREAM
sndstream is analog to spicestream but handle the sound card.

BIN
doc/globaltable.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

33
doc/globaltable.sch Normal file
View File

@ -0,0 +1,33 @@
v 20201216 2
B 43200 48500 8200 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 43200 45100 8200 3400 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 46800 44000 9 10 1 0 0 0 1
global table
B 43200 44700 8200 400 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 43200 44300 4100 400 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 47300 44300 4100 400 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 44700 44400 9 10 1 0 0 0 1
statusbar
T 43600 44800 9 10 1 0 0 0 1
xlabel_ev_box
T 48900 44400 9 10 1 0 0 0 1
xscrollbar
T 45600 46900 9 10 1 0 0 0 1
panel_scrolled (paneltable)
T 46200 48700 9 10 1 0 0 0 1
meas_hbox (meas_buttons)
B 43200 49000 8200 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 43200 49500 8200 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 46500 49700 9 10 1 0 0 0 1
menuBar
T 46500 49200 9 10 1 0 0 0 1
toolBar
B 51000 45100 400 3400 3 0 0 2 100 100 0 -1 -1 -1 -1 -1
T 51300 46200 9 10 1 0 90 0 1
vscrollbar
T 44900 44800 9 10 1 0 0 0 1
( logx_box [xlabel_log][grip])
T 48500 44800 9 10 1 0 0 0 1
( layout [xlabels])
T 46100 50200 9 14 1 0 0 0 1
gaw global table

BIN
doc/lmswtable.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

33
doc/lmswtable.sch Normal file
View File

@ -0,0 +1,33 @@
v 20201216 2
B 43200 46000 8000 3500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 43200 45000 8000 4500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 46300 49200 9 10 1 0 0 0 1
lmtopbox (ylabel_log)
T 46500 44700 9 10 1 0 0 0 1
lmswtable
B 43200 45000 3200 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 46400 45000 1600 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 48000 45000 1600 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 49600 45000 1600 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 44300 45100 9 10 1 0 0 0 1
vw_button
T 46700 45100 9 10 1 0 0 0 1
c0_button
T 48400 45100 9 10 1 0 0 0 1
c1_button
T 49900 45100 9 10 1 0 0 0 1
diff_button
B 43200 45500 3200 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 46400 45500 1600 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 48000 45500 1600 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 49600 45500 1600 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 44300 45600 9 10 1 0 0 0 1
vw_button
T 46700 45600 9 10 1 0 0 0 1
c0_button
T 48400 45600 9 10 1 0 0 0 1
c1_button
T 49900 45600 9 10 1 0 0 0 1
diff_button
T 46200 49700 9 14 1 0 0 0 1
gaw lmswtable

BIN
doc/lmtable.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

19
doc/lmtable.sch Normal file
View File

@ -0,0 +1,19 @@
v 20201216 2
B 43200 49500 6700 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 49900 44500 1400 5500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 43200 44500 6700 500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 43200 45000 6700 4500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 45200 49700 9 10 1 0 0 0 1
logy_hbox (logY ylabel_max)
T 50000 49300 9 10 1 0 0 0 1
label_layout
T 45400 48300 9 10 1 0 0 0 1
lmscroll_win (lmswtable)
T 45200 44700 9 10 1 0 0 0 1
ylabel_min_box (ylabel_min)
T 50200 49000 9 10 1 0 0 0 1
(ylabels)
T 46500 44200 9 10 1 0 0 0 1
lmtable
T 46000 50200 9 14 1 0 0 0 1
gaw lmtable

95
doc/objects Normal file
View File

@ -0,0 +1,95 @@
Gaw object hierarchy
userData
top level window
globalTable
toolBar
ui manager
hbox for X measure buttons
measure_button + label
measure_button + label
measure_button + label
scrolled_window for panel table
table container for panels
lmbox container for the left part = (lmhbox | lmvbox)
lmhbox
lmscroll_win
lmtable
lmtopbox
vw_button c0_button c1_button diff_button
... repeated for each visble wave
ylabel_box
label_layout
ylabels
lmvbox
logy_hbox
ylabel_log
ylabel_max
lmscroll_win
lmtable
lmtopbox
vw_button c0_button c1_button diff_button
... repeated for each visble wave
ylabel_box
ylabel_min
panel DrawingArea
... repeated for each panel
event_box
allline_hbox
logx_ box
logx_label
grip_drawing_area
xlabel_box
layout
xlabels
statusbar
xscrollbar
DataFile
WaveTable
wlist_win list window
vbox
wlist_menubar
label file name
scrolled_window
vbox
button wave list button
...
WaveTable : wt
DataSet
GPtrArray *datas
GArray col0
...
GArray coln
GPtrArray *vars
WaveVar iv
WaveVar dv(0)
...
WaveVar dv(n-1)
Growing Politic :
- the main window size is computed from its components :
* panels are given the minimal size request
* panelTable is given a size request height of n panels user defined
panelHeight.
* main scrolled window is given a size request height of n panels user
defined panelHeight as long as it stand on the screen.
* when adding or removing a panel
* when showing the xlabel box
* when showing the xmeas_button box

BIN
doc/paneltable.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

22
doc/paneltable.sch Normal file
View File

@ -0,0 +1,22 @@
v 20201216 2
B 42500 47500 4000 2500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 46500 47500 7000 2500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 44000 49000 9 10 1 0 0 0 1
lmtable
T 49800 49000 9 10 1 0 0 0 1
drawing
B 42500 44900 4000 2500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 46500 44900 7000 2500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 44000 46400 9 10 1 0 0 0 1
lmtable
T 49800 46400 9 10 1 0 0 0 1
drawing
B 42500 42300 4000 2500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
B 46500 42300 7000 2500 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 44000 43800 9 10 1 0 0 0 1
lmtable
T 49800 43800 9 10 1 0 0 0 1
drawing
B 42500 42300 11000 7700 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1
T 46200 41900 9 14 1 0 0 0 1
panel table with n panels

8
doc/sound Normal file
View File

@ -0,0 +1,8 @@
Sound capture is a direct replacement for:
arecord -d 10 -t wav foobar.wav
+ gaw load file foobar.wav
from the sound card.
Samples come directly in a datafile and can be viewed as a loaded file. You
have just to connect your real time signals to the sound card input.

60
doc/ttg Normal file
View File

@ -0,0 +1,60 @@
ttg "Talk to gaw" is intended to let your application controls gaw with
command lines send over a socket. To enable this you need to run gaw with a
port number, and use the same port in your application :
gaw -p 1946.
For each line sent, gaw echo back a line feed or an error message and can be
used for synchronization, if needed.
In directory ttg, you can find an example C program and an example Perl program
talking to gaw.
Using this method, it is possible to add a column of data to a previosly
loaded array of data.
Here are the keywords used to send commands.
table_new tblname # add a new wavetable = set of dataset
variables v0 v1 v2 ... vn # define variable names
vartype t0 t1 t2 ... tn # define type for variable
rowdatas
d0 d1 d2 ... dn # implicit row 0
. . .
d0 d1 d2 ... dn # implicit row n
enddata
coladd varname vartype # add a new col
coldatas varName # new data for variable varName
d0
.
dn
enddata
dataset name1 # add a new dataset
enddata # finishing enter datas
tabledel tblname # delete the table
table_set table0 # set table as curent
table_new table1
panel 4 # set gaw to display 4 panels
panel +2 # set gaw to display 2 more panels
copyvar v1 p0 # display var <varname> in panel 0, automatic color selection
copyvar v1 p0 #rrggbb # display var <varname> in panel 0 with color (rr, gg, bb are 2-digit hex numbers)
copyvar v1 p0 #rrggbbaa # display var <varname> in panel 0 with color and alpha transparency
# (rr, gg, bb, aa are 2-digit hex numbers)
delvar v1 p0 # undisplay this wave form
coladd varname vartype # add a variable column to the current set
coldatas varName # new data for variable varName
load file format # load an existing file
export_img file format # export displayed panels to image file
export_data file format # export displayed data to data file
color_bg #color # set background color in drawing areas
grid on/off # turn grid on or off
logx on/off # set logx scale

13722
examples/Ascii.dat Normal file

File diff suppressed because it is too large Load Diff

4150
examples/Cazm.B Normal file

File diff suppressed because it is too large Load Diff

147
examples/Hspicea.tr0 Normal file
View File

@ -0,0 +1,147 @@
00010002000000009007 *
98/08/3114:57:35 Copyright (C) 1985-1997 by Avant!,Inc.
0
3 1 15 VOLTS v(a
i1(m0 $&%# 3 1 15 VOLTS v(a
.00000E+00 .00000E+00 .10000E-37 .10000E-01 .10000E-01 .41945E-12 .20000E-01
.20000E-01 .86644E-12 .30000E-01 .30000E-01 .13494E-11 .40000E-01 .40000E-01
.18788E-11 .50000E-01 .50000E-01 .24681E-11 .60000E-01 .60000E-01 .31341E-11
.70000E-01 .70000E-01 .38980E-11 .80000E-01 .80000E-01 .47868E-11 .90000E-01
.90000E-01 .58345E-11 .10000E+00 .10000E+00 .70843E-11 .11000E+00 .11000E+00
.85908E-11 .12000E+00 .12000E+00 .10423E-10 .13000E+00 .13000E+00 .12670E-10
.14000E+00 .14000E+00 .15442E-10 .15000E+00 .15000E+00 .18880E-10 .16000E+00
.16000E+00 .23163E-10 .17000E+00 .17000E+00 .28518E-10 .18000E+00 .18000E+00
.35233E-10 .19000E+00 .19000E+00 .43672E-10 .20000E+00 .20000E+00 .54298E-10
.21000E+00 .21000E+00 .67697E-10 .22000E+00 .22000E+00 .84612E-10 .23000E+00
.23000E+00 .10599E-09 .24000E+00 .24000E+00 .13302E-09 .25000E+00 .25000E+00
.16721E-09 .26000E+00 .26000E+00 .21050E-09 .27000E+00 .27000E+00 .26532E-09
.28000E+00 .28000E+00 .33476E-09 .29000E+00 .29000E+00 .42273E-09 .30000E+00
.30000E+00 .53421E-09 .31000E+00 .31000E+00 .67549E-09 .32000E+00 .32000E+00
.85457E-09 .33000E+00 .33000E+00 .10816E-08 .34000E+00 .34000E+00 .13693E-08
.35000E+00 .35000E+00 .17341E-08 .36000E+00 .36000E+00 .21966E-08 .37000E+00
.37000E+00 .27830E-08 .38000E+00 .38000E+00 .35265E-08 .39000E+00 .39000E+00
.44692E-08 .40000E+00 .40000E+00 .56644E-08 .41000E+00 .41000E+00 .71799E-08
.42000E+00 .42000E+00 .91014E-08 .43000E+00 .43000E+00 .11538E-07 .44000E+00
.44000E+00 .14627E-07 .45000E+00 .45000E+00 .18544E-07 .46000E+00 .46000E+00
.23511E-07 .47000E+00 .47000E+00 .29809E-07 .48000E+00 .48000E+00 .37794E-07
.49000E+00 .49000E+00 .47918E-07 .50000E+00 .50000E+00 .60754E-07 .51000E+00
.51000E+00 .77029E-07 .52000E+00 .52000E+00 .97664E-07 .53000E+00 .53000E+00
.12382E-06 .54000E+00 .54000E+00 .15699E-06 .55000E+00 .55000E+00 .19903E-06
.56000E+00 .56000E+00 .25232E-06 .57000E+00 .57000E+00 .31986E-06 .58000E+00
.58000E+00 .40545E-06 .59000E+00 .59000E+00 .51391E-06 .60000E+00 .60000E+00
.65131E-06 .61000E+00 .61000E+00 .82534E-06 .62000E+00 .62000E+00 .93514E-06
.63000E+00 .63000E+00 .11470E-05 .64000E+00 .64000E+00 .13889E-05 .65000E+00
.65000E+00 .16627E-05 .66000E+00 .66000E+00 .19702E-05 .67000E+00 .67000E+00
.23132E-05 .68000E+00 .68000E+00 .26935E-05 .69000E+00 .69000E+00 .31126E-05
.70000E+00 .70000E+00 .35721E-05 .71000E+00 .71000E+00 .40734E-05 .72000E+00
.72000E+00 .46179E-05 .73000E+00 .73000E+00 .52070E-05 .74000E+00 .74000E+00
.58419E-05 .75000E+00 .75000E+00 .65236E-05 .76000E+00 .76000E+00 .72534E-05
.77000E+00 .77000E+00 .80321E-05 .78000E+00 .78000E+00 .88607E-05 .79000E+00
.79000E+00 .97400E-05 .80000E+00 .80000E+00 .10671E-04 .81000E+00 .81000E+00
.11654E-04 .82000E+00 .82000E+00 .12689E-04 .83000E+00 .83000E+00 .13779E-04
.84000E+00 .84000E+00 .14921E-04 .85000E+00 .85000E+00 .16119E-04 .86000E+00
.86000E+00 .17371E-04 .87000E+00 .87000E+00 .18678E-04 .88000E+00 .88000E+00
.20040E-04 .89000E+00 .89000E+00 .21458E-04 .90000E+00 .90000E+00 .22931E-04
.91000E+00 .91000E+00 .24460E-04 .92000E+00 .92000E+00 .26046E-04 .93000E+00
.93000E+00 .27687E-04 .94000E+00 .94000E+00 .29384E-04 .95000E+00 .95000E+00
.31137E-04 .96000E+00 .96000E+00 .32946E-04 .97000E+00 .97000E+00 .34811E-04
.98000E+00 .98000E+00 .36731E-04 .99000E+00 .99000E+00 .38707E-04 .10000E+01
.10000E+01 .40739E-04 .10100E+01 .10100E+01 .42825E-04 .10200E+01 .10200E+01
.44967E-04 .10300E+01 .10300E+01 .47163E-04 .10400E+01 .10400E+01 .49414E-04
.10500E+01 .10500E+01 .51719E-04 .10600E+01 .10600E+01 .54077E-04 .10700E+01
.10700E+01 .56490E-04 .10800E+01 .10800E+01 .58955E-04 .10900E+01 .10900E+01
.61473E-04 .11000E+01 .11000E+01 .64044E-04 .11100E+01 .11100E+01 .66666E-04
.11200E+01 .11200E+01 .69341E-04 .11300E+01 .11300E+01 .72066E-04 .11400E+01
.11400E+01 .74843E-04 .11500E+01 .11500E+01 .77670E-04 .11600E+01 .11600E+01
.80546E-04 .11700E+01 .11700E+01 .83472E-04 .11800E+01 .11800E+01 .86448E-04
.11900E+01 .11900E+01 .89472E-04 .12000E+01 .12000E+01 .92544E-04 .12100E+01
.12100E+01 .95663E-04 .12200E+01 .12200E+01 .98830E-04 .12300E+01 .12300E+01
.10204E-03 .12400E+01 .12400E+01 .10530E-03 .12500E+01 .12500E+01 .10861E-03
.12600E+01 .12600E+01 .11196E-03 .12700E+01 .12700E+01 .11535E-03 .12800E+01
.12800E+01 .11879E-03 .12900E+01 .12900E+01 .12228E-03 .13000E+01 .13000E+01
.12580E-03 .13100E+01 .13100E+01 .12937E-03 .13200E+01 .13200E+01 .13298E-03
.13300E+01 .13300E+01 .13663E-03 .13400E+01 .13400E+01 .14032E-03 .13500E+01
.13500E+01 .14406E-03 .13600E+01 .13600E+01 .14783E-03 .13700E+01 .13700E+01
.15164E-03 .13800E+01 .13800E+01 .15549E-03 .13900E+01 .13900E+01 .15938E-03
.14000E+01 .14000E+01 .16331E-03 .14100E+01 .14100E+01 .16727E-03 .14200E+01
.14200E+01 .17128E-03 .14300E+01 .14300E+01 .17531E-03 .14400E+01 .14400E+01
.17939E-03 .14500E+01 .14500E+01 .18349E-03 .14600E+01 .14600E+01 .18764E-03
.14700E+01 .14700E+01 .19181E-03 .14800E+01 .14800E+01 .19602E-03 .14900E+01
.14900E+01 .20026E-03 .15000E+01 .15000E+01 .20454E-03 .15100E+01 .15100E+01
.20884E-03 .15200E+01 .15200E+01 .21318E-03 .15300E+01 .15300E+01 .21755E-03
.15400E+01 .15400E+01 .22195E-03 .15500E+01 .15500E+01 .22638E-03 .15600E+01
.15600E+01 .23083E-03 .15700E+01 .15700E+01 .23532E-03 .15800E+01 .15800E+01
.23983E-03 .15900E+01 .15900E+01 .24437E-03 .16000E+01 .16000E+01 .24894E-03
.16100E+01 .16100E+01 .25353E-03 .16200E+01 .16200E+01 .25815E-03 .16300E+01
.16300E+01 .26280E-03 .16400E+01 .16400E+01 .26747E-03 .16500E+01 .16500E+01
.27216E-03 .16600E+01 .16600E+01 .27688E-03 .16700E+01 .16700E+01 .28162E-03
.16800E+01 .16800E+01 .28638E-03 .16900E+01 .16900E+01 .29115E-03 .17000E+01
.17000E+01 .29594E-03 .17100E+01 .17100E+01 .30074E-03 .17200E+01 .17200E+01
.30554E-03 .17300E+01 .17300E+01 .31036E-03 .17400E+01 .17400E+01 .31519E-03
.17500E+01 .17500E+01 .32003E-03 .17600E+01 .17600E+01 .32488E-03 .17700E+01
.17700E+01 .32974E-03 .17800E+01 .17800E+01 .33461E-03 .17900E+01 .17900E+01
.33949E-03 .18000E+01 .18000E+01 .34438E-03 .18100E+01 .18100E+01 .34928E-03
.18200E+01 .18200E+01 .35419E-03 .18300E+01 .18300E+01 .35911E-03 .18400E+01
.18400E+01 .36404E-03 .18500E+01 .18500E+01 .36897E-03 .18600E+01 .18600E+01
.37392E-03 .18700E+01 .18700E+01 .37887E-03 .18800E+01 .18800E+01 .38383E-03
.18900E+01 .18900E+01 .38880E-03 .19000E+01 .19000E+01 .39377E-03 .19100E+01
.19100E+01 .39876E-03 .19200E+01 .19200E+01 .40375E-03 .19300E+01 .19300E+01
.40875E-03 .19400E+01 .19400E+01 .41376E-03 .19500E+01 .19500E+01 .41877E-03
.19600E+01 .19600E+01 .42380E-03 .19700E+01 .19700E+01 .42882E-03 .19800E+01
.19800E+01 .43386E-03 .19900E+01 .19900E+01 .43890E-03 .20000E+01 .20000E+01
.44395E-03 .20100E+01 .20100E+01 .44901E-03 .20200E+01 .20200E+01 .45407E-03
.20300E+01 .20300E+01 .45914E-03 .20400E+01 .20400E+01 .46422E-03 .20500E+01
.20500E+01 .46930E-03 .20600E+01 .20600E+01 .47439E-03 .20700E+01 .20700E+01
.47949E-03 .20800E+01 .20800E+01 .48459E-03 .20900E+01 .20900E+01 .48969E-03
.21000E+01 .21000E+01 .49481E-03 .21100E+01 .21100E+01 .49992E-03 .21200E+01
.21200E+01 .50505E-03 .21300E+01 .21300E+01 .51018E-03 .21400E+01 .21400E+01
.51531E-03 .21500E+01 .21500E+01 .52045E-03 .21600E+01 .21600E+01 .52559E-03
.21700E+01 .21700E+01 .53075E-03 .21800E+01 .21800E+01 .53590E-03 .21900E+01
.21900E+01 .54106E-03 .22000E+01 .22000E+01 .54623E-03 .22100E+01 .22100E+01
.55140E-03 .22200E+01 .22200E+01 .55657E-03 .22300E+01 .22300E+01 .56175E-03
.22400E+01 .22400E+01 .56693E-03 .22500E+01 .22500E+01 .57212E-03 .22600E+01
.22600E+01 .57732E-03 .22700E+01 .22700E+01 .58251E-03 .22800E+01 .22800E+01
.58772E-03 .22900E+01 .22900E+01 .59292E-03 .23000E+01 .23000E+01 .59813E-03
.23100E+01 .23100E+01 .60335E-03 .23200E+01 .23200E+01 .60857E-03 .23300E+01
.23300E+01 .61379E-03 .23400E+01 .23400E+01 .61902E-03 .23500E+01 .23500E+01
.62425E-03 .23600E+01 .23600E+01 .62948E-03 .23700E+01 .23700E+01 .63472E-03
.23800E+01 .23800E+01 .63996E-03 .23900E+01 .23900E+01 .64521E-03 .24000E+01
.24000E+01 .65046E-03 .24100E+01 .24100E+01 .65571E-03 .24200E+01 .24200E+01
.66096E-03 .24300E+01 .24300E+01 .66622E-03 .24400E+01 .24400E+01 .67149E-03
.24500E+01 .24500E+01 .67675E-03 .24600E+01 .24600E+01 .68202E-03 .24700E+01
.24700E+01 .68729E-03 .24800E+01 .24800E+01 .69257E-03 .24900E+01 .24900E+01
.69785E-03 .25000E+01 .25000E+01 .70313E-03 .25100E+01 .25100E+01 .70842E-03
.25200E+01 .25200E+01 .71371E-03 .25300E+01 .25300E+01 .71900E-03 .25400E+01
.25400E+01 .72429E-03 .25500E+01 .25500E+01 .72959E-03 .25600E+01 .25600E+01
.73489E-03 .25700E+01 .25700E+01 .74019E-03 .25800E+01 .25800E+01 .74549E-03
.25900E+01 .25900E+01 .75080E-03 .26000E+01 .26000E+01 .75611E-03 .26100E+01
.26100E+01 .76142E-03 .26200E+01 .26200E+01 .76674E-03 .26300E+01 .26300E+01
.77206E-03 .26400E+01 .26400E+01 .77738E-03 .26500E+01 .26500E+01 .78270E-03
.26600E+01 .26600E+01 .78802E-03 .26700E+01 .26700E+01 .79335E-03 .26800E+01
.26800E+01 .79868E-03 .26900E+01 .26900E+01 .80401E-03 .27000E+01 .27000E+01
.80935E-03 .27100E+01 .27100E+01 .81468E-03 .27200E+01 .27200E+01 .82002E-03
.27300E+01 .27300E+01 .82536E-03 .27400E+01 .27400E+01 .83070E-03 .27500E+01
.27500E+01 .83605E-03 .27600E+01 .27600E+01 .84139E-03 .27700E+01 .27700E+01
.84674E-03 .27800E+01 .27800E+01 .85209E-03 .27900E+01 .27900E+01 .85744E-03
.28000E+01 .28000E+01 .86279E-03 .28100E+01 .28100E+01 .86815E-03 .28200E+01
.28200E+01 .87351E-03 .28300E+01 .28300E+01 .87887E-03 .28400E+01 .28400E+01
.88423E-03 .28500E+01 .28500E+01 .88959E-03 .28600E+01 .28600E+01 .89495E-03
.28700E+01 .28700E+01 .90032E-03 .28800E+01 .28800E+01 .90569E-03 .28900E+01
.28900E+01 .91105E-03 .29000E+01 .29000E+01 .91642E-03 .29100E+01 .29100E+01
.92179E-03 .29200E+01 .29200E+01 .92717E-03 .29300E+01 .29300E+01 .93254E-03
.29400E+01 .29400E+01 .93792E-03 .29500E+01 .29500E+01 .94329E-03 .29600E+01
.29600E+01 .94867E-03 .29700E+01 .29700E+01 .95405E-03 .29800E+01 .29800E+01
.95943E-03 .29900E+01 .29900E+01 .96482E-03 .30000E+01 .30000E+01 .97020E-03
.30100E+01 .30100E+01 .97558E-03 .30200E+01 .30200E+01 .98097E-03 .30300E+01
.30300E+01 .98636E-03 .30400E+01 .30400E+01 .99174E-03 .30500E+01 .30500E+01
.99713E-03 .30600E+01 .30600E+01 .10025E-02 .30700E+01 .30700E+01 .10079E-02
.30800E+01 .30800E+01 .10133E-02 .30900E+01 .30900E+01 .10187E-02 .31000E+01
.31000E+01 .10241E-02 .31100E+01 .31100E+01 .10295E-02 .31200E+01 .31200E+01
.10349E-02 .31300E+01 .31300E+01 .10403E-02 .31400E+01 .31400E+01 .10457E-02
.31500E+01 .31500E+01 .10511E-02 .31600E+01 .31600E+01 .10565E-02 .31700E+01
.31700E+01 .10619E-02 .31800E+01 .31800E+01 .10673E-02 .31900E+01 .31900E+01
.10727E-02 .32000E+01 .32000E+01 .10781E-02 .32100E+01 .32100E+01 .10835E-02
.32200E+01 .32200E+01 .10889E-02 .32300E+01 .32300E+01 .10943E-02 .32400E+01
.32400E+01 .10997E-02 .32500E+01 .32500E+01 .11051E-02 .32600E+01 .32600E+01
.11105E-02 .32700E+01 .32700E+01 .11159E-02 .32800E+01 .32800E+01 .11213E-02
.32900E+01 .32900E+01 .11267E-02 .33000E+01 .33000E+01 .11321E-02 .10000E+31

BIN
examples/Hspiceb.tr0 Normal file

Binary file not shown.

BIN
examples/Hspiceb1.tr0 Normal file

Binary file not shown.

123510
examples/Nsout.out Normal file

File diff suppressed because it is too large Load Diff

BIN
examples/S2raw.rawspice Normal file

Binary file not shown.

201
examples/SineVar.dat Normal file
View File

@ -0,0 +1,201 @@
%time NodeGeneRch GeneSinus Rch
0 0 0 0
0.001 0.587785252292 -0.0587785252292 0.0587785252292
0.002 0.951056516295 -0.0951056516295 0.0951056516295
0.003 0.951056516295 -0.0951056516295 0.0951056516295
0.004 0.587785252292 -0.0587785252292 0.0587785252292
0.005 1.22460635382e-16 -1.22460635382e-17 1.22460635382e-17
0.006 -0.587785252292 0.0587785252292 -0.0587785252292
0.007 -0.951056516295 0.0951056516295 -0.0951056516295
0.008 -0.951056516295 0.0951056516295 -0.0951056516295
0.009 -0.587785252292 0.0587785252292 -0.0587785252292
0.01 -2.44921270764e-16 2.44921270764e-17 -2.44921270764e-17
0.011 0.587785252292 -0.0587785252292 0.0587785252292
0.012 0.951056516295 -0.0951056516295 0.0951056516295
0.013 0.951056516295 -0.0951056516295 0.0951056516295
0.014 0.587785252292 -0.0587785252292 0.0587785252292
0.015 3.67381906147e-16 -3.67381906147e-17 3.67381906147e-17
0.016 -0.587785252292 0.0587785252292 -0.0587785252292
0.017 -0.951056516295 0.0951056516295 -0.0951056516295
0.018 -0.951056516295 0.0951056516295 -0.0951056516295
0.019 -0.587785252292 0.0587785252292 -0.0587785252292
0.02 -4.89842541529e-16 4.89842541529e-17 -4.89842541529e-17
0.021 0.587785252292 -0.0587785252292 0.0587785252292
0.022 0.951056516295 -0.0951056516295 0.0951056516295
0.023 0.951056516295 -0.0951056516295 0.0951056516295
0.024 0.587785252292 -0.0587785252292 0.0587785252292
0.025 6.12303176911e-16 -6.12303176911e-17 6.12303176911e-17
0.026 -0.587785252292 0.0587785252292 -0.0587785252292
0.027 -0.951056516295 0.0951056516295 -0.0951056516295
0.028 -0.951056516295 0.0951056516295 -0.0951056516295
0.029 -0.587785252292 0.0587785252292 -0.0587785252292
0.03 -7.34763812293e-16 7.34763812293e-17 -7.34763812293e-17
0.031 0.587785252292 -0.0587785252292 0.0587785252292
0.032 0.951056516295 -0.0951056516295 0.0951056516295
0.033 0.951056516295 -0.0951056516295 0.0951056516295
0.034 0.587785252292 -0.0587785252292 0.0587785252292
0.035 -2.69548923112e-15 2.69548923112e-16 -2.69548923112e-16
0.036 -0.587785252292 0.0587785252292 -0.0587785252292
0.037 -0.951056516295 0.0951056516295 -0.0951056516295
0.038 -0.951056516295 0.0951056516295 -0.0951056516295
0.039 -0.587785252292 0.0587785252292 -0.0587785252292
0.04 -9.79685083058e-16 9.79685083058e-17 -9.79685083058e-17
0.041 0.587785252292 -0.0587785252292 0.0587785252292
0.042 0.951056516295 -0.0951056516295 0.0951056516295
0.043 0.951056516295 -0.0951056516295 0.0951056516295
0.044 0.587785252292 -0.0587785252292 0.0587785252292
0.045 -2.45056796036e-15 2.45056796036e-16 -2.45056796036e-16
0.046 -0.587785252292 0.0587785252292 -0.0587785252292
0.047 -0.951056516295 0.0951056516295 -0.0951056516295
0.048 -0.951056516295 0.0951056516295 -0.0951056516295
0.049 -0.587785252292 0.0587785252292 -0.0587785252292
0.05 -2.44921270764e-15 2.44921270764e-16 -2.44921270764e-16
0.051 1.17557050458 -0.117557050458 0.117557050458
0.052 1.90211303259 -0.190211303259 0.190211303259
0.053 1.90211303259 -0.190211303259 0.190211303259
0.054 1.17557050458 -0.117557050458 0.117557050458
0.055 -4.41129337919e-15 4.41129337919e-16 -4.41129337919e-16
0.056 -1.17557050458 0.117557050458 -0.117557050458
0.057 -1.90211303259 0.190211303259 -0.190211303259
0.058 -1.90211303259 0.190211303259 -0.190211303259
0.059 -1.17557050458 0.117557050458 -0.117557050458
0.06 -2.93905524917e-15 2.93905524917e-16 -2.93905524917e-16
0.061 1.17557050458 -0.117557050458 0.117557050458
0.062 1.90211303259 -0.190211303259 0.190211303259
0.063 1.90211303259 -0.190211303259 0.190211303259
0.064 1.17557050458 -0.117557050458 0.117557050458
0.065 -3.92145083766e-15 3.92145083766e-16 -3.92145083766e-16
0.066 -1.17557050458 0.117557050458 -0.117557050458
0.067 -1.90211303259 0.190211303259 -0.190211303259
0.068 -1.90211303259 0.190211303259 -0.190211303259
0.069 -1.17557050458 0.117557050458 -0.117557050458
0.07 1.07819569245e-14 -1.07819569245e-15 1.07819569245e-15
0.071 1.17557050458 -0.117557050458 0.117557050458
0.072 1.90211303259 -0.190211303259 0.190211303259
0.073 1.90211303259 -0.190211303259 0.190211303259
0.074 1.17557050458 -0.117557050458 0.117557050458
0.075 -3.43160829613e-15 3.43160829613e-16 -3.43160829613e-16
0.076 -1.17557050458 0.117557050458 -0.117557050458
0.077 -1.90211303259 0.190211303259 -0.190211303259
0.078 -1.90211303259 0.190211303259 -0.190211303259
0.079 -1.17557050458 0.117557050458 -0.117557050458
0.08 -3.91874033223e-15 3.91874033223e-16 -3.91874033223e-16
0.081 1.17557050458 -0.117557050458 0.117557050458
0.082 1.90211303259 -0.190211303259 0.190211303259
0.083 1.90211303259 -0.190211303259 0.190211303259
0.084 1.17557050458 -0.117557050458 0.117557050458
0.085 -2.9417657546e-15 2.9417657546e-16 -2.9417657546e-16
0.086 -1.17557050458 0.117557050458 -0.117557050458
0.087 -1.90211303259 0.190211303259 -0.190211303259
0.088 -1.90211303259 0.190211303259 -0.190211303259
0.089 -1.17557050458 0.117557050458 -0.117557050458
0.09 9.80227184144e-15 -9.80227184144e-16 9.80227184144e-16
0.091 1.17557050458 -0.117557050458 0.117557050458
0.092 1.90211303259 -0.190211303259 0.190211303259
0.093 1.90211303259 -0.190211303259 0.190211303259
0.094 1.17557050458 -0.117557050458 0.117557050458
0.095 -2.45192321308e-15 2.45192321308e-16 -2.45192321308e-16
0.096 -1.17557050458 0.117557050458 -0.117557050458
0.097 -1.90211303259 0.190211303259 -0.190211303259
0.098 -1.90211303259 0.190211303259 -0.190211303259
0.099 -1.17557050458 0.117557050458 -0.117557050458
0.1 -1.22460635382e-14 1.22460635382e-15 -1.22460635382e-15
0.101 2.93892626146 -0.293892626146 0.293892626146
0.102 4.75528258148 -0.475528258148 0.475528258148
0.103 4.75528258148 -0.475528258148 0.475528258148
0.104 2.93892626146 -0.293892626146 0.293892626146
0.105 -4.90520167887e-15 4.90520167887e-16 -4.90520167887e-16
0.106 -2.93892626146 0.293892626146 -0.293892626146
0.107 -4.75528258148 0.475528258148 -0.475528258148
0.108 -4.75528258148 0.475528258148 -0.475528258148
0.109 -2.93892626146 0.293892626146 -0.293892626146
0.11 2.2056466896e-14 -2.2056466896e-15 2.2056466896e-15
0.111 2.93892626146 -0.293892626146 0.293892626146
0.112 4.75528258148 -0.475528258148 0.475528258148
0.113 4.75528258148 -0.475528258148 0.475528258148
0.114 2.93892626146 -0.293892626146 0.293892626146
0.115 3.1846541463e-14 -3.1846541463e-15 3.1846541463e-15
0.116 -2.93892626146 0.293892626146 -0.293892626146
0.117 -4.75528258148 0.475528258148 -0.475528258148
0.118 -4.75528258148 0.475528258148 -0.475528258148
0.119 -2.93892626146 0.293892626146 -0.293892626146
0.12 -1.46952762459e-14 1.46952762459e-15 -1.46952762459e-15
0.121 2.93892626146 -0.293892626146 0.293892626146
0.122 4.75528258148 -0.475528258148 0.475528258148
0.123 4.75528258148 -0.475528258148 0.475528258148
0.124 2.93892626146 -0.293892626146 0.293892626146
0.125 -2.45598897122e-15 2.45598897122e-16 -2.45598897122e-16
0.126 -2.93892626146 0.293892626146 -0.293892626146
0.127 -4.75528258148 0.475528258148 -0.475528258148
0.128 -4.75528258148 0.475528258148 -0.475528258148
0.129 -2.93892626146 0.293892626146 -0.293892626146
0.13 1.96072541883e-14 -1.96072541883e-15 1.96072541883e-15
0.131 2.93892626146 -0.293892626146 0.293892626146
0.132 4.75528258148 -0.475528258148 0.475528258148
0.133 4.75528258148 -0.475528258148 0.475528258148
0.134 2.93892626146 -0.293892626146 0.293892626146
0.135 -3.67585194054e-14 3.67585194054e-15 -3.67585194054e-15
0.136 -2.93892626146 0.293892626146 -0.293892626146
0.137 -4.75528258148 0.475528258148 -0.475528258148
0.138 -4.75528258148 0.475528258148 -0.475528258148
0.139 -2.93892626146 0.293892626146 -0.293892626146
0.14 5.39097846225e-14 -5.39097846225e-15 5.39097846225e-15
0.141 2.93892626146 -0.293892626146 0.293892626146
0.142 4.75528258148 -0.475528258148 0.475528258148
0.143 4.75528258148 -0.475528258148 0.475528258148
0.144 2.93892626146 -0.293892626146 0.293892626146
0.145 -7.10610498396e-14 7.10610498396e-15 -7.10610498396e-15
0.146 -2.93892626146 0.293892626146 -0.293892626146
0.147 -4.75528258148 0.475528258148 -0.475528258148
0.148 -4.75528258148 0.475528258148 -0.475528258148
0.149 -2.93892626146 0.293892626146 -0.293892626146
0.15 6.86321659227e-15 -6.86321659227e-16 6.86321659227e-16
0.151 1.17557050458 -0.117557050458 0.117557050458
0.152 1.90211303259 -0.190211303259 0.190211303259
0.153 1.90211303259 -0.190211303259 0.190211303259
0.154 1.17557050458 -0.117557050458 0.117557050458
0.155 1.46979867513e-14 -1.46979867513e-15 1.46979867513e-15
0.156 -1.17557050458 0.117557050458 -0.117557050458
0.157 -1.90211303259 0.190211303259 -0.190211303259
0.158 -1.90211303259 0.190211303259 -0.190211303259
0.159 -1.17557050458 0.117557050458 -0.117557050458
0.16 -7.83748066446e-15 7.83748066446e-16 -7.83748066446e-16
0.161 1.17557050458 -0.117557050458 0.117557050458
0.162 1.90211303259 -0.190211303259 0.190211303259
0.163 1.90211303259 -0.190211303259 0.190211303259
0.164 1.17557050458 -0.117557050458 0.117557050458
0.165 9.76974577627e-16 -9.76974577627e-17 9.76974577627e-17
0.166 -1.17557050458 0.117557050458 -0.117557050458
0.167 -1.90211303259 0.190211303259 -0.190211303259
0.168 -1.90211303259 0.190211303259 -0.190211303259
0.169 -1.17557050458 0.117557050458 -0.117557050458
0.17 5.88353150921e-15 -5.88353150921e-16 5.88353150921e-16
0.171 1.17557050458 -0.117557050458 0.117557050458
0.172 1.90211303259 -0.190211303259 0.190211303259
0.173 1.90211303259 -0.190211303259 0.190211303259
0.174 1.17557050458 -0.117557050458 0.117557050458
0.175 -1.2744037596e-14 1.2744037596e-15 -1.2744037596e-15
0.176 -1.17557050458 0.117557050458 -0.117557050458
0.177 -1.90211303259 0.190211303259 -0.190211303259
0.178 -1.90211303259 0.190211303259 -0.190211303259
0.179 -1.17557050458 0.117557050458 -0.117557050458
0.18 1.96045436829e-14 -1.96045436829e-15 1.96045436829e-15
0.181 1.17557050458 -0.117557050458 0.117557050458
0.182 1.90211303259 -0.190211303259 0.190211303259
0.183 1.90211303259 -0.190211303259 0.190211303259
0.184 1.17557050458 -0.117557050458 0.117557050458
0.185 -2.64650497697e-14 2.64650497697e-15 -2.64650497697e-15
0.186 -1.17557050458 0.117557050458 -0.117557050458
0.187 -1.90211303259 0.190211303259 -0.190211303259
0.188 -1.90211303259 0.190211303259 -0.190211303259
0.189 -1.17557050458 0.117557050458 -0.117557050458
0.19 4.90384642615e-15 -4.90384642615e-16 4.90384642615e-16
0.191 1.17557050458 -0.117557050458 0.117557050458
0.192 1.90211303259 -0.190211303259 0.190211303259
0.193 1.90211303259 -0.190211303259 0.190211303259
0.194 1.17557050458 -0.117557050458 0.117557050458
0.195 -1.1764352513e-14 1.1764352513e-15 -1.1764352513e-15
0.196 -1.17557050458 0.117557050458 -0.117557050458
0.197 -1.90211303259 0.190211303259 -0.190211303259
0.198 -1.90211303259 0.190211303259 -0.190211303259
0.199 -1.17557050458 0.117557050458 -0.117557050458

525
examples/Spice3a.raw Normal file
View File

@ -0,0 +1,525 @@
Title: * RC circuit driven by square wave
Date: Sun Oct 8 22:29:16 2000
Plotname: Transient Analysis
Flags: real
No. Variables: 6
No. Points: 85
Command: version 12
Variables:
0 time time
1 gnd voltage
2 a voltage
3 b voltage
4 va#branch current
5 vgnd#branch current
Values:
0 0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
1 5.000000000000002e-12
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
2 1.000000000000000e-11
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
3 2.000000000000001e-11
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
4 4.000000000000002e-11
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
5 8.000000000000003e-11
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
6 1.600000000000001e-10
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
7 3.200000000000001e-10
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
8 6.400000000000003e-10
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
9 1.280000000000001e-09
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
10 2.560000000000001e-09
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
11 5.120000000000002e-09
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
12 9.120000000000005e-09
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
13 1.312000000000001e-08
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
14 1.712000000000001e-08
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
15 2.112000000000001e-08
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
16 2.512000000000002e-08
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
17 2.912000000000002e-08
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
18 3.312000000000002e-08
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
19 3.712000000000002e-08
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
20 4.112000000000003e-08
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
21 4.512000000000003e-08
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
22 4.912000000000003e-08
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
23 5.000000000000002e-08
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
0.000000000000000e+00
24 5.001372000139946e-08
0.000000000000000e+00
6.860000699718387e-02
1.877233255427589e-04
-1.368245673432822e-03
-5.124549330888517e-20
25 5.004116000419834e-08
0.000000000000000e+00
2.058000209915847e-01
9.375892212019797e-04
-4.097248635407655e-03
-4.061522982084370e-19
26 5.009604000979610e-08
0.000000000000000e+00
4.802000489803864e-01
4.671574893413615e-03
-9.510569481739456e-03
-4.845028458294598e-19
27 5.016463932075743e-08
0.000000000000000e+00
8.231966037870162e-01
1.348821124072676e-02
-1.619416785092579e-02
-2.046431600566390e-18
28 5.030183794268007e-08
0.000000000000000e+00
1.509189713400243e+00
4.469003260352831e-02
-2.928999361593429e-02
3.435565634063442e-18
29 5.057623518652536e-08
0.000000000000000e+00
2.881175932626696e+00
1.595560010088557e-01
-5.443239863235680e-02
-2.175180608549043e-18
30 5.100000000000003e-08
0.000000000000000e+00
5.000000000000000e+00
4.669820287810404e-01
-9.066035942437919e-02
-9.893344823930228e-19
31 5.105487944876909e-08
0.000000000000000e+00
5.000000000000000e+00
5.161957696905909e-01
-8.967608460618819e-02
-4.531965080989409e-17
32 5.116463834630720e-08
0.000000000000000e+00
5.000000000000000e+00
6.135546511601278e-01
-8.772890697679744e-02
-9.128982292327947e-17
33 5.138415614138343e-08
0.000000000000000e+00
5.000000000000000e+00
8.019985348164886e-01
-8.396002930367023e-02
9.925870889104793e-17
34 5.182319173153590e-08
0.000000000000000e+00
5.000000000000000e+00
1.155110090919698e+00
-7.689779818160604e-02
3.686287386450715e-18
35 5.270126291184084e-08
0.000000000000000e+00
5.000000000000000e+00
1.775824363633995e+00
-6.448351272732010e-02
2.439454888092385e-17
36 5.445740527245070e-08
0.000000000000000e+00
5.000000000000000e+00
2.739084460252097e+00
-4.521831079495806e-02
-8.700722434196173e-18
37 5.796968999367044e-08
0.000000000000000e+00
5.000000000000000e+00
3.914456245269961e+00
-2.171087509460078e-02
4.725766219321192e-17
38 6.196968999367043e-08
0.000000000000000e+00
5.000000000000000e+00
4.534766962258554e+00
-9.304660754828919e-03
-7.386127300057499e-18
39 6.596968999367043e-08
0.000000000000000e+00
5.000000000000000e+00
4.800614412396523e+00
-3.987711752069547e-03
4.426255369172072e-17
40 6.996968999367042e-08
0.000000000000000e+00
5.000000000000000e+00
4.914549033884223e+00
-1.709019322315530e-03
3.081844675290046e-17
41 7.396968999367042e-08
0.000000000000000e+00
5.000000000000000e+00
4.963378157378952e+00
-7.324368524209568e-04
5.060513640076092e-17
42 7.796968999367042e-08
0.000000000000000e+00
5.000000000000000e+00
4.984304924590980e+00
-3.139015081804075e-04
-1.493488492598782e-17
43 8.196968999367041e-08
0.000000000000000e+00
5.000000000000000e+00
4.993273539110421e+00
-1.345292177915880e-04
1.168227840853131e-17
44 8.596968999367041e-08
0.000000000000000e+00
5.000000000000000e+00
4.997117231047323e+00
-5.765537905354279e-05
2.276824562219559e-17
45 8.996968999367041e-08
0.000000000000000e+00
5.000000000000000e+00
4.998764527591710e+00
-2.470944816579390e-05
1.387778780781446e-17
46 9.396968999367040e-08
0.000000000000000e+00
5.000000000000000e+00
4.999470511825018e+00
-1.058976349963103e-05
3.889575293791747e-18
47 9.796968999367040e-08
0.000000000000000e+00
5.000000000000000e+00
4.999773076496437e+00
-4.538470071260294e-06
-6.098637220230962e-18
48 1.000000000000000e-07
0.000000000000000e+00
5.000000000000000e+00
4.999849670542595e+00
-3.006589148100149e-06
-5.618877758906127e-17
49 1.001000000000000e-07
0.000000000000000e+00
4.500000000000027e+00
4.990048696610389e+00
9.800973932207243e-03
-2.831936074532138e-16
50 1.003000000000000e-07
0.000000000000000e+00
3.500000000000013e+00
4.951223257527631e+00
2.902446515055235e-02
1.127570259384925e-16
51 1.007000000000000e-07
0.000000000000000e+00
1.499999999999987e+00
4.762667622333200e+00
6.525335244666426e-02
-1.821459649775647e-16
52 1.010000000000000e-07
0.000000000000000e+00
0.000000000000000e+00
4.528919993847773e+00
9.057839987695547e-02
4.362829542081670e-16
53 1.010800000000000e-07
0.000000000000000e+00
0.000000000000000e+00
4.457598419141509e+00
8.915196838283018e-02
6.331740687315346e-16
54 1.012400000000000e-07
0.000000000000000e+00
0.000000000000000e+00
4.317201618538626e+00
8.634403237077252e-02
3.473783760643556e-16
55 1.015600000000000e-07
0.000000000000000e+00
0.000000000000000e+00
4.049468184830806e+00
8.098936369661612e-02
9.302454639925628e-17
56 1.022000000000000e-07
0.000000000000000e+00
0.000000000000000e+00
3.562314117482742e+00
7.124628234965484e-02
-4.835541689285350e-17
57 1.034800000000000e-07
0.000000000000000e+00
0.000000000000000e+00
2.753845665288082e+00
5.507691330576164e-02
-9.703609443745265e-18
58 1.060400000000000e-07
0.000000000000000e+00
0.000000000000000e+00
1.631258897272561e+00
3.262517794545123e-02
8.145068820797352e-18
59 1.100400000000000e-07
0.000000000000000e+00
0.000000000000000e+00
6.991109559739550e-01
1.398221911947910e-02
1.528047436846758e-18
60 1.133858977201869e-07
0.000000000000000e+00
0.000000000000000e+00
3.485682195025457e-01
6.971364390050914e-03
1.035074261544755e-18
61 1.164282441841334e-07
0.000000000000000e+00
0.000000000000000e+00
1.859494310844993e-01
3.718988621689985e-03
1.416239087809190e-18
62 1.196845929931872e-07
0.000000000000000e+00
0.000000000000000e+00
9.459453130354480e-02
1.891890626070896e-03
-3.214490034830070e-19
63 1.230850975933692e-07
0.000000000000000e+00
0.000000000000000e+00
4.658601991578762e-02
9.317203983157524e-04
-4.252105395216588e-19
64 1.265042731109810e-07
0.000000000000000e+00
0.000000000000000e+00
2.284599526971512e-02
4.569199053943023e-04
1.248314806016025e-19
65 1.298318782801816e-07
0.000000000000000e+00
0.000000000000000e+00
1.143772634369389e-02
2.287545268738777e-04
-2.890499932505300e-20
66 1.331512717055513e-07
0.000000000000000e+00
0.000000000000000e+00
5.736819040494918e-03
1.147363808098984e-04
-4.094874904382508e-20
67 1.364760822836329e-07
0.000000000000000e+00
0.000000000000000e+00
2.873913557732933e-03
5.747827115465866e-05
1.402898318889935e-20
68 1.398297329194433e-07
0.000000000000000e+00
0.000000000000000e+00
1.430397879060197e-03
2.860795758120394e-05
1.240770918829542e-20
69 1.431724290546777e-07
0.000000000000000e+00
0.000000000000000e+00
7.136933369316130e-04
1.427386673863226e-05
5.595049663308679e-21
70 1.465159079284737e-07
0.000000000000000e+00
0.000000000000000e+00
3.560326973084803e-04
7.120653946169606e-06
4.810882442608409e-21
71 1.498503209981507e-07
0.000000000000000e+00
0.000000000000000e+00
1.779731047438250e-04
3.559462094876501e-06
1.833859418030062e-21
72 1.531924800227155e-07
0.000000000000000e+00
0.000000000000000e+00
8.880996149927905e-05
1.776199229985581e-06
-6.158359660457291e-22
73 1.565315886053205e-07
0.000000000000000e+00
0.000000000000000e+00
4.434730451937012e-05
8.869460903874024e-07
1.218023451984333e-22
74 1.600788283551087e-07
0.000000000000000e+00
0.000000000000000e+00
2.112330844451934e-05
4.224661688903868e-07
8.271806125530277e-24
75 1.640788283551087e-07
0.000000000000000e+00
0.000000000000000e+00
9.052846476222577e-06
1.810569295244516e-07
-4.629626490882727e-23
76 1.680788283551087e-07
0.000000000000000e+00
0.000000000000000e+00
3.879791346952535e-06
7.759582693905070e-08
-1.809457589959748e-25
77 1.720788283551087e-07
0.000000000000000e+00
0.000000000000000e+00
1.662767720122515e-06
3.325535440245030e-08
-1.971016303349011e-24
78 1.760788283551088e-07
0.000000000000000e+00
0.000000000000000e+00
7.126147371953638e-07
1.425229474390728e-08
3.647995748329563e-24
79 1.800788283551088e-07
0.000000000000000e+00
0.000000000000000e+00
3.054063159408702e-07
6.108126318817403e-09
2.295749317261430e-24
80 1.840788283551088e-07
0.000000000000000e+00
0.000000000000000e+00
1.308884211175158e-07
2.617768422350316e-09
2.984797229866638e-25
81 1.880788283551088e-07
0.000000000000000e+00
0.000000000000000e+00
5.609503762179250e-08
1.121900752435850e-09
1.750892556356140e-25
82 1.920788283551088e-07
0.000000000000000e+00
0.000000000000000e+00
2.404073040933965e-08
4.808146081867930e-10
5.735334325318844e-26
83 1.960788283551088e-07
0.000000000000000e+00
0.000000000000000e+00
1.030317017543128e-08
2.060634035086256e-10
-2.726303288443817e-27
84 2.000000000000001e-07
0.000000000000000e+00
0.000000000000000e+00
4.498989352875767e-09
8.997978705751535e-11
-3.237485155027032e-26

BIN
examples/Spice3b.raw Normal file

Binary file not shown.

10001
examples/filter2k.asc Normal file

File diff suppressed because it is too large Load Diff

7518
examples/hp1.dat Normal file

File diff suppressed because it is too large Load Diff

826
examples/invsweep.tr0 Normal file
View File

@ -0,0 +1,826 @@
00070001000100009007 * sweep loading
95/02/0316:29:46 Copyright 1993 (C) by Meta-Software,Inc.
21
1 1 1 1 1 1 8
1 TIME 0 a vdd vss
y I(va v(y cload $&%#
.10000E-12 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .42461E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01-.68681E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .85825E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.33451E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .12242E-17 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.11205E-17
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.15657E-17 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49445E+01-.25359E-03 .49445E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .47611E+01-.30285E-03 .47611E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .39339E+01-.37135E-03 .39339E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .13278E+01-.25515E-03 .13278E+01 .17989E-08
.00000E+00 .39944E+01 .50000E+01 .00000E+00 .22020E+00-.48668E-03 .22020E+00
.10000E+31
.50000E-12 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .40834E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .30259E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .51932E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01 .19412E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .46517E-18 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.95782E-18
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.25420E-17 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49685E+01-.25109E-03 .49685E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .48811E+01-.28319E-03 .48811E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .45403E+01-.31215E-03 .45403E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .36913E+01-.24536E-03 .36913E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .22579E+01-.23116E-03 .22579E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .14945E+01-.31505E-03
.14945E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .99082E+00
-.60832E-04 .99082E+00 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.31289E+00-.21507E-04 .31289E+00 .10000E+31
.90000E-12 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .35955E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .37033E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .62776E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01 .34325E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .50577E-18 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .99420E-19
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
-.14701E-17 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49779E+01-.25010E-03 .49779E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49201E+01-.27711E-03 .49201E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .46968E+01-.29562E-03 .46968E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .41958E+01-.26763E-03 .41958E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .33349E+01-.13678E-03 .33349E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .27898E+01-.31856E-03
.27898E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .22651E+01
-.56314E-04 .22651E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.13680E+01-.46301E-04 .13680E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .71583E+00-.23995E-04 .71583E+00 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .35431E+00-.15546E-04 .35431E+00 .10000E+31
.13000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .36498E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01-.61898E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .15494E-17 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.18117E-17 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .24168E-17 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.28959E-17
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.41683E-17 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49830E+01-.24957E-03 .49830E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49397E+01-.27410E-03 .49397E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .47729E+01-.28741E-03 .47729E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .44137E+01-.27983E-03 .44137E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .38089E+01-.10720E-03 .38089E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .34188E+01-.28828E-03
.34188E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .30083E+01
-.37839E-04 .30083E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.22343E+01-.42559E-04 .22343E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .15177E+01-.30949E-04 .15177E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .98459E+00-.25919E-04 .98459E+00 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .61888E+00-.13827E-04 .61888E+00 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .38115E+00-.12171E-04 .38115E+00
.10000E+31
.17000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .18066E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .68203E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .84469E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.55128E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .12242E-17 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.11205E-17
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.69882E-18 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49862E+01-.24923E-03 .49862E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49516E+01-.27231E-03 .49516E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .48182E+01-.28247E-03 .48182E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .45378E+01-.28542E-03 .45378E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .40718E+01-.97130E-04 .40718E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .37705E+01-.26926E-03
.37705E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .34490E+01
-.25731E-04 .34490E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.28180E+01-.32737E-04 .28180E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .21690E+01-.29315E-04 .21690E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .16127E+01-.27662E-04 .16127E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .11663E+01-.19660E-04 .11663E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .82614E+00-.17015E-04 .82614E+00
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .57647E+00-.10183E-04
.57647E+00 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .39803E+00
-.93346E-05 .39803E+00 .10000E+31
.21000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .40834E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .30259E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .74971E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.52407E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .10208E-17 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.88998E-18
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.11320E-17 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49884E+01-.24901E-03 .49884E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49595E+01-.27111E-03 .49595E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .48484E+01-.27915E-03 .48484E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .46178E+01-.28507E-03 .46178E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .42387E+01-.99021E-04 .42387E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .39935E+01-.25381E-03
.39935E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .37310E+01
-.18518E-04 .37310E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.32094E+01-.24707E-04 .32094E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .26484E+01-.24713E-04 .26484E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .21303E+01-.25589E-04 .21303E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .16752E+01-.20975E-04 .16752E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .12934E+01-.19272E-04 .12934E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .98397E+00-.13920E-04
.98397E+00 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .74008E+00
-.12492E-04 .74008E+00 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.55163E+00-.80344E-05 .55163E+00 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .40856E+00-.76005E-05 .40856E+00 .10000E+31
.25000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .40292E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .45068E-19 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .47868E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.49706E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .13461E-17 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.93074E-18
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.24328E-17 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49900E+01-.24884E-03 .49900E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49652E+01-.27026E-03 .49652E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .48700E+01-.27677E-03 .48700E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .46739E+01-.28353E-03 .46739E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .43542E+01-.10319E-03 .43542E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .41475E+01-.24296E-03
.41475E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .39259E+01
-.13923E-04 .39259E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.34846E+01-.19111E-04 .34846E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .30011E+01-.19969E-04 .30011E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .25363E+01-.22446E-04 .25363E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .21057E+01-.19758E-04 .21057E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .17210E+01-.19578E-04 .17210E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .13878E+01-.15399E-04
.13878E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .11068E+01
-.14563E-04 .11068E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.87480E+00-.10446E-04 .87480E+00 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .68657E+00-.99709E-05 .68657E+00 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .53586E+00-.64707E-05 .53586E+00 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .41642E+00-.65848E-05 .41642E+00 .10000E+31
.29000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .40834E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .30259E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .74971E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.30723E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .91234E-18 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .31595E-19
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
-.21749E-17 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49912E+01-.24871E-03 .49912E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49695E+01-.26962E-03 .49695E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .48861E+01-.27498E-03 .48861E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .47154E+01-.28187E-03 .47154E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .44389E+01-.10743E-03 .44389E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .42604E+01-.23541E-03
.42604E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .40687E+01
-.10826E-04 .40687E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.36866E+01-.15157E-04 .36866E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .32653E+01-.16241E-04 .32653E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .28520E+01-.19041E-04 .28520E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .24564E+01-.17859E-04 .24564E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .20885E+01-.18420E-04 .20885E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .17551E+01-.15654E-04
.17551E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .14602E+01
-.15197E-04 .14602E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.12044E+01-.11985E-04 .12044E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .98637E+00-.11421E-04 .98637E+00 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .80305E+00-.84115E-05 .80305E+00 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .65067E+00-.81468E-05 .65067E+00 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .52515E+00-.55533E-05 .52515E+00
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .42253E+00-.56679E-05
.42253E+00 .10000E+31
.33000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .40292E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .24836E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .79046E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.72743E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .16578E-17 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.83585E-18
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
-.16854E-18 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49921E+01-.24862E-03 .49921E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49729E+01-.26912E-03 .49729E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .48987E+01-.27357E-03 .48987E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .47475E+01-.28034E-03 .47475E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .45039E+01-.11126E-03 .45039E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .43467E+01-.22946E-03
.43467E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .41779E+01
-.89428E-05 .41779E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.38411E+01-.11965E-04 .38411E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .34690E+01-.13747E-04 .34690E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .31006E+01-.15649E-04 .31006E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .27409E+01-.16149E-04 .27409E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .23973E+01-.16374E-04 .23973E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .20762E+01-.15432E-04
.20762E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .17821E+01
-.14613E-04 .17821E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.15176E+01-.12979E-04 .15176E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .12836E+01-.11804E-04 .12836E+01 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .10793E+01-.10051E-04 .10793E+01 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .90306E+00-.89496E-05 .90306E+00 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .75246E+00-.73716E-05 .75246E+00
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .62481E+00-.65208E-05
.62481E+00 .51889E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .51733E+00
-.52094E-05 .51733E+00 .54111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.42732E+00-.46386E-05 .42732E+00 .10000E+31
.37000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .35955E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .37033E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .47868E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.40219E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .91243E-18 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.28031E-18
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
-.10357E-17 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49929E+01-.24854E-03 .49929E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49756E+01-.26872E-03 .49756E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .49088E+01-.27245E-03 .49088E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .47730E+01-.27900E-03 .47730E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .45553E+01-.11461E-03 .45553E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .44149E+01-.22444E-03
.44149E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .42641E+01
-.79052E-05 .42641E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.39631E+01-.92419E-05 .39631E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .36301E+01-.12157E-04 .36301E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .32992E+01-.12631E-04 .32992E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .29726E+01-.14665E-04 .29726E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .26550E+01-.14100E-04 .26550E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .23516E+01-.14904E-04
.23516E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .20667E+01
-.13411E-04 .20667E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.18036E+01-.13447E-04 .18036E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .15640E+01-.11504E-04 .15640E+01 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .13487E+01-.11218E-04 .13487E+01 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .11574E+01-.91984E-05 .11574E+01 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .98905E+00-.88850E-05 .98905E+00
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .84214E+00-.70018E-05
.84214E+00 .51889E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .71486E+00
-.68053E-05 .71486E+00 .54111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.60524E+00-.51420E-05 .60524E+00 .56333E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .51129E+00-.51060E-05 .51129E+00 .58556E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .43113E+00-.36721E-05 .43113E+00 .10000E+31
.41000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .35955E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .62783E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .12633E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.63347E-19 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.91538E-20 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .12242E-17
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
-.35301E-17 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49935E+01-.24847E-03 .49935E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49778E+01-.26839E-03 .49778E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .49170E+01-.27153E-03 .49170E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .47938E+01-.27782E-03 .47938E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .45970E+01-.11752E-03 .45970E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .44702E+01-.22019E-03
.44702E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .43340E+01
-.71728E-05 .43340E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.40618E+01-.73182E-05 .40618E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .37606E+01-.10737E-04 .37606E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .34609E+01-.10430E-04 .34609E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .31634E+01-.13082E-04 .31634E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .28708E+01-.12219E-04 .28708E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .25868E+01-.13909E-04
.25868E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .23154E+01
-.12262E-04 .23154E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.20595E+01-.13215E-04 .20595E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .18214E+01-.11099E-04 .18214E+01 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .16025E+01-.11636E-04 .16025E+01 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .14033E+01-.93475E-05 .14033E+01 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .12239E+01-.97254E-05 .12239E+01
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .10635E+01-.74710E-05
.10635E+01 .51889E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .92127E+00
-.78496E-05 .92127E+00 .54111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.79588E+00-.57400E-05 .79588E+00 .56333E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .68593E+00-.61952E-05 .68593E+00 .58556E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .58997E+00-.42721E-05 .58997E+00 .60778E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .50655E+00-.48262E-05 .50655E+00 .63000E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .43428E+00-.30913E-05 .43428E+00
.10000E+31
.45000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .35413E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .24834E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .84469E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.55128E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .21322E-17 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.76945E-19
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
-.17953E-17 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49940E+01-.24841E-03 .49940E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49796E+01-.26812E-03 .49796E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .49239E+01-.27076E-03 .49239E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .48111E+01-.27679E-03 .48111E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .46316E+01-.12007E-03 .46316E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .45160E+01-.21654E-03
.45160E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .43918E+01
-.65696E-05 .43918E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.41435E+01-.60892E-05 .41435E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .38685E+01-.93209E-05 .38685E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .35947E+01-.89382E-05 .35947E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .33223E+01-.11503E-04 .33223E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .30526E+01-.10730E-04 .30526E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .27879E+01-.12672E-04
.27879E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .25315E+01
-.11251E-04 .25315E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.22860E+01-.12532E-04 .22860E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .20538E+01-.10665E-04 .20538E+01 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .18363E+01-.11505E-04 .18363E+01 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .16348E+01-.94137E-05 .16348E+01 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .14497E+01-.10021E-04 .14497E+01
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .12810E+01-.78850E-05
.12810E+01 .51889E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .11284E+01
-.84119E-05 .11284E+01 .54111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.99129E+00-.63476E-05 .99129E+00 .56333E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .86869E+00-.68843E-05 .86869E+00 .58556E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .75963E+00-.49525E-05 .75963E+00 .60778E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .66302E+00-.55417E-05 .66302E+00 .63000E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .57776E+00-.37638E-05 .57776E+00
.65222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .50275E+00-.44176E-05
.50275E+00 .67444E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .43694E+00
-.27923E-05 .43694E+00 .10000E+31
.49000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .35955E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .62783E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .46514E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01 .99403E-19 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .68195E-18 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.14457E-18
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.47696E-19 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49945E+01-.24837E-03 .49945E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49812E+01-.26789E-03 .49812E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .49297E+01-.27011E-03 .49297E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .48258E+01-.27590E-03 .48258E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .46606E+01-.12229E-03 .46606E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .45544E+01-.21341E-03
.45544E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .44402E+01
-.60642E-05 .44402E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.42120E+01-.53298E-05 .42120E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .39591E+01-.79560E-05 .39591E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .37071E+01-.79366E-05 .37071E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .34562E+01-.99962E-05 .34562E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .32068E+01-.96108E-05 .32068E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .29603E+01-.11306E-04
.29603E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .27192E+01
-.10429E-04 .27192E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.24856E+01-.11556E-04 .24856E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .22616E+01-.10269E-04 .22616E+01 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .20490E+01-.10976E-04 .20490E+01 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .18489E+01-.94386E-05 .18489E+01 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .16623E+01-.98862E-05 .16623E+01
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .14894E+01-.82444E-05
.14894E+01 .51889E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .13305E+01
-.85651E-05 .13305E+01 .54111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.11853E+01-.69289E-05 .11853E+01 .56333E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .10534E+01-.72145E-05 .10534E+01 .58556E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .93410E+00-.56526E-05 .93410E+00 .60778E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .82672E+00-.59566E-05 .82672E+00 .63000E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .73043E+00-.45035E-05 .73043E+00
.65222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .64438E+00-.48508E-05
.64438E+00 .67444E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .56771E+00
-.35181E-05 .56771E+00 .69667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.49958E+00-.39154E-05 .49958E+00 .10000E+31
.53000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .40292E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .45068E-19 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .62776E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.45635E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .45158E-18 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .72178E-19
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
-.14701E-17 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49949E+01-.24833E-03 .49949E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49825E+01-.26769E-03 .49825E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .49347E+01-.26955E-03 .49347E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .48383E+01-.27510E-03 .48383E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .46854E+01-.12424E-03 .46854E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .45871E+01-.21068E-03
.45871E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .44815E+01
-.56346E-05 .44815E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.42703E+01-.48737E-05 .42703E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .40362E+01-.66954E-05 .40362E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .38028E+01-.72454E-05 .38028E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .35703E+01-.86022E-05 .35703E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .33389E+01-.88149E-05 .33389E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .31092E+01-.98870E-05
.31092E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .28826E+01
-.98032E-05 .28826E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.26613E+01-.10406E-04 .26613E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .24469E+01-.99460E-05 .24469E+01 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .22411E+01-.10177E-04 .22411E+01 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .20451E+01-.94528E-05 .20451E+01 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .18598E+01-.94312E-05 .18598E+01
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .16860E+01-.85573E-05
.16860E+01 .51889E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .15239E+01
-.83927E-05 .15239E+01 .54111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.13739E+01-.74660E-05 .13739E+01 .56333E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .12356E+01-.72435E-05 .12356E+01 .58556E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .11088E+01-.63328E-05 .11088E+01 .60778E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .99304E+00-.61091E-05 .99304E+00 .63000E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .88784E+00-.52563E-05 .88784E+00
.65222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .79253E+00-.50637E-05
.79253E+00 .67444E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .70646E+00
-.42899E-05 .70646E+00 .69667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.62896E+00-.41433E-05 .62896E+00 .71889E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .55933E+00-.34551E-05 .55933E+00 .74111E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .49693E+00-.33578E-05 .49693E+00 .10000E+31
.57000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .35413E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .24834E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .91245E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.49710E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .13461E-17 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.71395E-18
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.69900E-18 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49952E+01-.24829E-03 .49952E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49836E+01-.26752E-03 .49836E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .49391E+01-.26906E-03 .49391E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .48491E+01-.27440E-03 .48491E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .47068E+01-.12596E-03 .47068E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .46154E+01-.20829E-03
.46154E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .45171E+01
-.52650E-05 .45171E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.43206E+01-.45095E-05 .43206E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .41027E+01-.57614E-05 .41027E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .38854E+01-.65532E-05 .38854E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .36688E+01-.75404E-05 .36688E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .34531E+01-.80337E-05 .34531E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .32384E+01-.87493E-05
.32384E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .30257E+01
-.90764E-05 .30257E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.28163E+01-.94406E-05 .28163E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .26120E+01-.94352E-05 .26120E+01 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .24140E+01-.94731E-05 .24140E+01 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .22236E+01-.92114E-05 .22236E+01 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .20417E+01-.90091E-05 .20417E+01
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .18692E+01-.85787E-05
.18692E+01 .51889E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .17066E+01
-.82239E-05 .17066E+01 .54111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.15542E+01-.77059E-05 .15542E+01 .56333E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .14120E+01-.72733E-05 .14120E+01 .58556E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .12802E+01-.67317E-05 .12802E+01 .60778E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .11584E+01-.62766E-05 .11584E+01 .63000E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .10463E+01-.57555E-05 .10463E+01
.65222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .94356E+00-.53139E-05
.94356E+00 .67444E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .84969E+00
-.48398E-05 .84969E+00 .69667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.76417E+00-.44321E-05 .76417E+00 .71889E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .68645E+00-.40182E-05 .68645E+00 .74111E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .61598E+00-.36532E-05 .61598E+00 .76333E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .55224E+00-.33036E-05 .55224E+00 .78556E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .49467E+00-.29831E-05 .49467E+00
.10000E+31
.61000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .35955E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .26191E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .84460E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.41570E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .79037E-18 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.68672E-18
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.69882E-18 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49955E+01-.24826E-03 .49955E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49847E+01-.26737E-03 .49847E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .49429E+01-.26863E-03 .49429E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .48586E+01-.27378E-03 .48586E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .47255E+01-.12749E-03 .47255E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .46400E+01-.20618E-03
.46400E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .45481E+01
-.49435E-05 .45481E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.43644E+01-.41930E-05 .43644E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .41606E+01-.51129E-05 .41606E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .39573E+01-.58329E-05 .39573E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .37546E+01-.67712E-05 .37546E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .35526E+01-.72304E-05 .35526E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .33514E+01-.79189E-05
.33514E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .31514E+01
-.82310E-05 .31514E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.29536E+01-.87108E-05 .29536E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .27592E+01-.87430E-05 .27592E+01 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .25695E+01-.89299E-05 .25695E+01 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .23856E+01-.87321E-05 .23856E+01 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .22085E+01-.86882E-05 .22085E+01
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .20389E+01-.83252E-05
.20389E+01 .51889E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .18775E+01
-.81193E-05 .18775E+01 .54111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.17247E+01-.76566E-05 .17247E+01 .56333E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .15808E+01-.73522E-05 .15808E+01 .58556E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .14459E+01-.68460E-05 .14459E+01 .60778E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .13200E+01-.64943E-05 .13200E+01 .63000E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .12030E+01-.59873E-05 .12030E+01
.65222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .10946E+01-.56253E-05
.10946E+01 .67444E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .99449E+00
-.51462E-05 .99449E+00 .69667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.90234E+00-.47975E-05 .90234E+00 .71889E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .81775E+00-.43632E-05 .81775E+00 .74111E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .74028E+00-.40413E-05 .74028E+00 .76333E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .66949E+00-.36601E-05 .66949E+00 .78556E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .60493E+00-.33709E-05 .60493E+00
.80778E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .54616E+00-.30448E-05
.54616E+00 .83000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .49273E+00
-.27893E-05 .49273E+00 .10000E+31
.65000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .18066E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .45163E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01-.30730E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01 .99374E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.90458E-19 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .66848E-18
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.26466E-18 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49958E+01-.24823E-03 .49958E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49856E+01-.26724E-03 .49856E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .49462E+01-.26826E-03 .49462E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .48669E+01-.27322E-03 .48669E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .47419E+01-.12886E-03 .47419E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .46617E+01-.20429E-03
.46617E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .45754E+01
-.46614E-05 .45754E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.44029E+01-.39154E-05 .44029E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .42115E+01-.46769E-05 .42115E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .40206E+01-.51065E-05 .40206E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .38301E+01-.62223E-05 .38301E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .36402E+01-.64268E-05 .36402E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .34509E+01-.73137E-05
.34509E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .32625E+01
-.73721E-05 .32625E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.30754E+01-.81252E-05 .30754E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .28907E+01-.79879E-05 .28907E+01 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .27094E+01-.84762E-05 .27094E+01 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .25325E+01-.81402E-05 .25325E+01 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .23609E+01-.84079E-05 .23609E+01
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .21953E+01-.79209E-05
.21953E+01 .51889E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .20365E+01
-.80207E-05 .20365E+01 .54111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.18848E+01-.74342E-05 .18848E+01 .56333E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .17408E+01-.74187E-05 .17408E+01 .58556E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .16045E+01-.67806E-05 .16045E+01 .60778E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .14762E+01-.66956E-05 .14762E+01 .63000E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .13559E+01-.60449E-05 .13559E+01
.65222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .12433E+01-.59258E-05
.12433E+01 .67444E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .11385E+01
-.52912E-05 .11385E+01 .69667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.10411E+01-.51635E-05 .10411E+01 .71889E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .95087E+00-.45638E-05 .95087E+00 .74111E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .86750E+00-.44438E-05 .86750E+00 .76333E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .79063E+00-.38900E-05 .79063E+00 .78556E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .71990E+00-.37869E-05 .71990E+00
.80778E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .65495E+00-.32840E-05
.65495E+00 .83000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .59540E+00
-.32019E-05 .59540E+00 .85222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.54088E+00-.27507E-05 .54088E+00 .87444E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .49105E+00-.26905E-05 .49105E+00 .10000E+31
.69000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .18066E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01-.22599E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .11699E-17 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.90353E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .12376E-17 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.71382E-18
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
-.60905E-19 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49960E+01-.24821E-03 .49960E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49864E+01-.26712E-03 .49864E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .49492E+01-.26792E-03 .49492E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .48743E+01-.27272E-03 .48743E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .47564E+01-.13010E-03 .47564E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .46809E+01-.20261E-03
.46809E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .45995E+01
-.44119E-05 .45995E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.44370E+01-.36699E-05 .44370E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .42566E+01-.43972E-05 .42566E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .40766E+01-.43938E-05 .40766E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .38969E+01-.58352E-05 .38969E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .37178E+01-.56425E-05 .37178E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .35392E+01-.68700E-05
.35392E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .33612E+01
-.65512E-05 .33612E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.31842E+01-.76360E-05 .31842E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .30086E+01-.72306E-05 .30086E+01 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .28355E+01-.80784E-05 .28355E+01 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .26657E+01-.75052E-05 .26657E+01 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .25000E+01-.81439E-05 .25000E+01
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .23391E+01-.74378E-05
.23391E+01 .51889E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .21838E+01
-.79071E-05 .21838E+01 .54111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.20344E+01-.71085E-05 .20344E+01 .56333E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .18914E+01-.74506E-05 .18914E+01 .58556E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .17551E+01-.65992E-05 .17551E+01 .60778E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .16258E+01-.68538E-05 .16258E+01 .63000E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .15035E+01-.59842E-05 .15035E+01
.65222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .13882E+01-.61842E-05
.13882E+01 .67444E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .12799E+01
-.53236E-05 .12799E+01 .69667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.11786E+01-.54944E-05 .11786E+01 .71889E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .10839E+01-.46622E-05 .10839E+01 .74111E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .99569E+00-.48215E-05 .99569E+00 .76333E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .91372E+00-.40303E-05 .91372E+00 .78556E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .83770E+00-.41897E-05 .83770E+00
.80778E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .76734E+00-.34465E-05
.76734E+00 .83000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .70232E+00
-.36127E-05 .70232E+00 .85222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.64234E+00-.29204E-05 .64234E+00 .87444E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .58710E+00-.30966E-05 .58710E+00 .89667E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .53627E+00-.24552E-05 .53627E+00 .91889E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .48958E+00-.26422E-05 .48958E+00 .10000E+31
.73000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .35955E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .26191E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .95302E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.30728E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .69550E-18 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.45634E-18
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
-.60319E-18 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49962E+01-.24819E-03 .49962E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49871E+01-.26701E-03 .49871E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .49519E+01-.26762E-03 .49519E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .48809E+01-.27227E-03 .48809E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .47694E+01-.13121E-03 .47694E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .46980E+01-.20110E-03
.46980E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .46211E+01
-.41896E-05 .46211E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.44674E+01-.34513E-05 .44674E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .42968E+01-.41751E-05 .42968E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .41265E+01-.38228E-05 .41265E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .39565E+01-.54523E-05 .39565E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .37870E+01-.50033E-05 .37870E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .36179E+01-.64340E-05
.36179E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .34494E+01
-.58776E-05 .34494E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.32815E+01-.71554E-05 .32815E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .31146E+01-.65630E-05 .31146E+01 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .29494E+01-.76595E-05 .29494E+01 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .27866E+01-.69268E-05 .27866E+01 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .26270E+01-.78273E-05 .26270E+01
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .24712E+01-.69796E-05
.24712E+01 .51889E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .23199E+01
-.77139E-05 .23199E+01 .54111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.21735E+01-.67824E-05 .21735E+01 .56333E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .20325E+01-.73841E-05 .20325E+01 .58556E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .18972E+01-.64012E-05 .18972E+01 .60778E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .17679E+01-.69038E-05 .17679E+01 .63000E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .16448E+01-.58992E-05 .16448E+01
.65222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .15280E+01-.63324E-05
.15280E+01 .67444E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .14175E+01
-.53310E-05 .14175E+01 .69667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.13133E+01-.57189E-05 .13133E+01 .71889E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .12152E+01-.47397E-05 .12152E+01 .74111E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .11232E+01-.51007E-05 .11232E+01 .76333E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .10371E+01-.41570E-05 .10371E+01 .78556E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .95667E+00-.45040E-05 .95667E+00
.80778E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .88169E+00-.36042E-05
.88169E+00 .83000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .81192E+00
-.39457E-05 .81192E+00 .85222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.74710E+00-.30942E-05 .74710E+00 .87444E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .68698E+00-.34352E-05 .68698E+00 .89667E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .63130E+00-.26335E-05 .63130E+00 .91889E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .57979E+00-.29766E-05 .57979E+00 .94111E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .53219E+00-.22242E-05 .53219E+00
.96333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .48826E+00-.25702E-05
.48826E+00 .10000E+31
.77000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .35413E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01-.40218E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .21051E-17 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.16897E-17 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .23219E-17 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.17981E-17
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.15664E-17 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49964E+01-.24817E-03 .49964E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49877E+01-.26692E-03 .49877E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .49543E+01-.26735E-03 .49543E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .48869E+01-.27185E-03 .48869E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .47811E+01-.13222E-03 .47811E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .47133E+01-.19972E-03
.47133E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .46404E+01
-.39903E-05 .46404E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.44946E+01-.32553E-05 .44946E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .43329E+01-.39759E-05 .43329E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .41713E+01-.34097E-05 .41713E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .40101E+01-.50330E-05 .40101E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .38492E+01-.45250E-05 .38492E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .36887E+01-.59658E-05
.36887E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .35286E+01
-.53633E-05 .35286E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.33691E+01-.66596E-05 .33691E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .32103E+01-.60108E-05 .32103E+01 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .30526E+01-.71997E-05 .30526E+01 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .28966E+01-.64374E-05 .28966E+01 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .27431E+01-.74453E-05 .27431E+01
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .25925E+01-.65835E-05
.25925E+01 .51889E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .24456E+01
-.74327E-05 .24456E+01 .54111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.23027E+01-.64950E-05 .23027E+01 .56333E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .21643E+01-.72121E-05 .21643E+01 .58556E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .20308E+01-.62244E-05 .20308E+01 .60778E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .19025E+01-.68374E-05 .19025E+01 .63000E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .17795E+01-.58249E-05 .17795E+01
.65222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .16621E+01-.63599E-05
.16621E+01 .67444E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .15503E+01
-.53446E-05 .15503E+01 .69667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.14442E+01-.58239E-05 .14442E+01 .71889E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .13438E+01-.48238E-05 .13438E+01 .74111E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .12489E+01-.52655E-05 .12489E+01 .76333E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .11595E+01-.42939E-05 .11595E+01 .78556E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .10755E+01-.47115E-05 .10755E+01
.80778E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .99669E+00-.37775E-05
.99669E+00 .83000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .92287E+00
-.41807E-05 .92287E+00 .85222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.85386E+00-.32899E-05 .85386E+00 .87444E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .78944E+00-.36850E-05 .78944E+00 .89667E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .72940E+00-.28401E-05 .72940E+00 .91889E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .67352E+00-.32311E-05 .67352E+00 .94111E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .62157E+00-.24328E-05 .62157E+00
.96333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .57333E+00-.28217E-05
.57333E+00 .98556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .52858E+00
-.20692E-05 .52858E+00 .10078E-07 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.48711E+00-.24568E-05 .48711E+00 .10000E+31
.81000E-11 .00000E+00 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .25000E-10 .00000E+00 .00000E+00 .50000E+01 .00000E+00
.50000E+01 .18066E-17 .50000E+01 .12500E-09 .00000E+00 .00000E+00 .50000E+01
.00000E+00 .50000E+01 .68203E-18 .50000E+01 .32500E-09 .00000E+00 .00000E+00
.50000E+01 .00000E+00 .50000E+01 .58719E-18 .50000E+01 .52500E-09 .00000E+00
.00000E+00 .50000E+01 .00000E+00 .50000E+01-.38868E-18 .50000E+01 .72500E-09
.00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01 .10209E-17 .50000E+01
.92500E-09 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01-.82237E-18
.50000E+01 .10000E-08 .00000E+00 .00000E+00 .50000E+01 .00000E+00 .50000E+01
.15664E-17 .50000E+01 .12000E-08 .00000E+00 .10000E+01 .50000E+01 .00000E+00
.49966E+01-.24815E-03 .49966E+01 .13000E-08 .00000E+00 .15000E+01 .50000E+01
.00000E+00 .49883E+01-.26683E-03 .49883E+01 .15000E-08 .00000E+00 .25000E+01
.50000E+01 .00000E+00 .49564E+01-.26711E-03 .49564E+01 .17000E-08 .00000E+00
.35000E+01 .50000E+01 .00000E+00 .48923E+01-.27148E-03 .48923E+01 .19000E-08
.00000E+00 .45000E+01 .50000E+01 .00000E+00 .47917E+01-.13315E-03 .47917E+01
.20000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .47272E+01-.19847E-03
.47272E+01 .21000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .46579E+01
-.38106E-05 .46579E+01 .23000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.45193E+01-.30787E-05 .45193E+01 .25222E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .43654E+01-.37963E-05 .43654E+01 .27444E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .42118E+01-.31211E-05 .42118E+01 .29667E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .40584E+01-.45910E-05 .40584E+01 .31889E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .39053E+01-.41746E-05 .39053E+01
.34111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .37525E+01-.54787E-05
.37525E+01 .36333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .36002E+01
-.49764E-05 .36002E+01 .38556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.34483E+01-.61485E-05 .34483E+01 .40778E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .32969E+01-.55909E-05 .32969E+01 .43000E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .31462E+01-.66843E-05 .31462E+01 .45222E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .29969E+01-.60582E-05 .29969E+01 .47444E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .28493E+01-.69898E-05 .28493E+01
.49667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .27040E+01-.62738E-05
.27040E+01 .51889E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .25617E+01
-.70600E-05 .25617E+01 .54111E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.24226E+01-.62721E-05 .24226E+01 .56333E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .22873E+01-.69338E-05 .22873E+01 .58556E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .21561E+01-.60944E-05 .21561E+01 .60778E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .20294E+01-.66545E-05 .20294E+01 .63000E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .19073E+01-.57847E-05 .19073E+01
.65222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .17900E+01-.62656E-05
.17900E+01 .67444E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .16778E+01
-.53849E-05 .16778E+01 .69667E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.15707E+01-.58067E-05 .15707E+01 .71889E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .14686E+01-.49315E-05 .14686E+01 .74111E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .13717E+01-.53113E-05 .13717E+01 .76333E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .12799E+01-.44546E-05 .12799E+01 .78556E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .11931E+01-.48058E-05 .11931E+01
.80778E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .11112E+01-.39771E-05
.11112E+01 .83000E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .10340E+01
-.43098E-05 .10340E+01 .85222E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.96142E+00-.35157E-05 .96142E+00 .87444E-08 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .89329E+00-.38370E-05 .89329E+00 .89667E-08 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .82943E+00-.30812E-05 .82943E+00 .91889E-08 .00000E+00
.50000E+01 .50000E+01 .00000E+00 .76966E+00-.33959E-05 .76966E+00 .94111E-08
.00000E+00 .50000E+01 .50000E+01 .00000E+00 .71378E+00-.26803E-05 .71378E+00
.96333E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .66160E+00-.29913E-05
.66160E+00 .98556E-08 .00000E+00 .50000E+01 .50000E+01 .00000E+00 .61292E+00
-.23161E-05 .61292E+00 .10078E-07 .00000E+00 .50000E+01 .50000E+01 .00000E+00
.56757E+00-.26251E-05 .56757E+00 .10300E-07 .00000E+00 .50000E+01 .50000E+01
.00000E+00 .52534E+00-.19896E-05 .52534E+00 .10522E-07 .00000E+00 .50000E+01
.50000E+01 .00000E+00 .48607E+00-.22972E-05 .48607E+00 .10000E+31

725
examples/myfile Normal file
View File

@ -0,0 +1,725 @@
TIME 0 a vdd vss y I(va v(y
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 4.2461e-18 5
1.25e-10 0 0 5 0 5 -6.8681e-19 5
3.25e-10 0 0 5 0 5 8.5825e-19 5
5.25e-10 0 0 5 0 5 -3.3451e-19 5
7.25e-10 0 0 5 0 5 1.2242e-18 5
9.25e-10 0 0 5 0 5 -1.1205e-18 5
1e-09 0 0 5 0 5 1.5657e-18 5
1.2e-09 0 1 5 0 4.9445 -0.00025359 4.9445
1.3e-09 0 1.5 5 0 4.7611 -0.00030285 4.7611
1.5e-09 0 2.5 5 0 3.9339 -0.00037135 3.9339
1.7e-09 0 3.5 5 0 1.3278 -0.00025515 1.3278
1.7989e-09 0 3.9944 5 0 0.2202 -0.00048668 0.2202
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 4.0834e-18 5
1.25e-10 0 0 5 0 5 3.0259e-19 5
3.25e-10 0 0 5 0 5 5.1932e-19 5
5.25e-10 0 0 5 0 5 1.9412e-19 5
7.25e-10 0 0 5 0 5 4.6517e-19 5
9.25e-10 0 0 5 0 5 -9.5782e-19 5
1e-09 0 0 5 0 5 2.542e-18 5
1.2e-09 0 1 5 0 4.9685 -0.00025109 4.9685
1.3e-09 0 1.5 5 0 4.8811 -0.00028319 4.8811
1.5e-09 0 2.5 5 0 4.5403 -0.00031215 4.5403
1.7e-09 0 3.5 5 0 3.6913 -0.00024536 3.6913
1.9e-09 0 4.5 5 0 2.2579 -0.00023116 2.2579
2e-09 0 5 5 0 1.4945 -0.00031505 1.4945
2.1e-09 0 5 5 0 0.99082 -6.0832e-05 0.99082
2.3e-09 0 5 5 0 0.31289 -2.1507e-05 0.31289
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 3.5955e-18 5
1.25e-10 0 0 5 0 5 3.7033e-19 5
3.25e-10 0 0 5 0 5 6.2776e-19 5
5.25e-10 0 0 5 0 5 3.4325e-19 5
7.25e-10 0 0 5 0 5 5.0577e-19 5
9.25e-10 0 0 5 0 5 9.942e-20 5
1e-09 0 0 5 0 5 -1.4701e-18 5
1.2e-09 0 1 5 0 4.9779 -0.0002501 4.9779
1.3e-09 0 1.5 5 0 4.9201 -0.00027711 4.9201
1.5e-09 0 2.5 5 0 4.6968 -0.00029562 4.6968
1.7e-09 0 3.5 5 0 4.1958 -0.00026763 4.1958
1.9e-09 0 4.5 5 0 3.3349 -0.00013678 3.3349
2e-09 0 5 5 0 2.7898 -0.00031856 2.7898
2.1e-09 0 5 5 0 2.2651 -5.6314e-05 2.2651
2.3e-09 0 5 5 0 1.368 -4.6301e-05 1.368
2.5222e-09 0 5 5 0 0.71583 -2.3995e-05 0.71583
2.7444e-09 0 5 5 0 0.35431 -1.5546e-05 0.35431
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 3.6498e-18 5
1.25e-10 0 0 5 0 5 -6.1898e-19 5
3.25e-10 0 0 5 0 5 1.5494e-18 5
5.25e-10 0 0 5 0 5 -1.8117e-18 5
7.25e-10 0 0 5 0 5 2.4168e-18 5
9.25e-10 0 0 5 0 5 -2.8959e-18 5
1e-09 0 0 5 0 5 4.1683e-18 5
1.2e-09 0 1 5 0 4.983 -0.00024957 4.983
1.3e-09 0 1.5 5 0 4.9397 -0.0002741 4.9397
1.5e-09 0 2.5 5 0 4.7729 -0.00028741 4.7729
1.7e-09 0 3.5 5 0 4.4137 -0.00027983 4.4137
1.9e-09 0 4.5 5 0 3.8089 -0.0001072 3.8089
2e-09 0 5 5 0 3.4188 -0.00028828 3.4188
2.1e-09 0 5 5 0 3.0083 -3.7839e-05 3.0083
2.3e-09 0 5 5 0 2.2343 -4.2559e-05 2.2343
2.5222e-09 0 5 5 0 1.5177 -3.0949e-05 1.5177
2.7444e-09 0 5 5 0 0.98459 -2.5919e-05 0.98459
2.9667e-09 0 5 5 0 0.61888 -1.3827e-05 0.61888
3.1889e-09 0 5 5 0 0.38115 -1.2171e-05 0.38115
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 1.8066e-18 5
1.25e-10 0 0 5 0 5 6.8203e-19 5
3.25e-10 0 0 5 0 5 8.4469e-19 5
5.25e-10 0 0 5 0 5 -5.5128e-19 5
7.25e-10 0 0 5 0 5 1.2242e-18 5
9.25e-10 0 0 5 0 5 -1.1205e-18 5
1e-09 0 0 5 0 5 6.9882e-19 5
1.2e-09 0 1 5 0 4.9862 -0.00024923 4.9862
1.3e-09 0 1.5 5 0 4.9516 -0.00027231 4.9516
1.5e-09 0 2.5 5 0 4.8182 -0.00028247 4.8182
1.7e-09 0 3.5 5 0 4.5378 -0.00028542 4.5378
1.9e-09 0 4.5 5 0 4.0718 -9.713e-05 4.0718
2e-09 0 5 5 0 3.7705 -0.00026926 3.7705
2.1e-09 0 5 5 0 3.449 -2.5731e-05 3.449
2.3e-09 0 5 5 0 2.818 -3.2737e-05 2.818
2.5222e-09 0 5 5 0 2.169 -2.9315e-05 2.169
2.7444e-09 0 5 5 0 1.6127 -2.7662e-05 1.6127
2.9667e-09 0 5 5 0 1.1663 -1.966e-05 1.1663
3.1889e-09 0 5 5 0 0.82614 -1.7015e-05 0.82614
3.4111e-09 0 5 5 0 0.57647 -1.0183e-05 0.57647
3.6333e-09 0 5 5 0 0.39803 -9.3346e-06 0.39803
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 4.0834e-18 5
1.25e-10 0 0 5 0 5 3.0259e-19 5
3.25e-10 0 0 5 0 5 7.4971e-19 5
5.25e-10 0 0 5 0 5 -5.2407e-19 5
7.25e-10 0 0 5 0 5 1.0208e-18 5
9.25e-10 0 0 5 0 5 -8.8998e-19 5
1e-09 0 0 5 0 5 1.132e-18 5
1.2e-09 0 1 5 0 4.9884 -0.00024901 4.9884
1.3e-09 0 1.5 5 0 4.9595 -0.00027111 4.9595
1.5e-09 0 2.5 5 0 4.8484 -0.00027915 4.8484
1.7e-09 0 3.5 5 0 4.6178 -0.00028507 4.6178
1.9e-09 0 4.5 5 0 4.2387 -9.9021e-05 4.2387
2e-09 0 5 5 0 3.9935 -0.00025381 3.9935
2.1e-09 0 5 5 0 3.731 -1.8518e-05 3.731
2.3e-09 0 5 5 0 3.2094 -2.4707e-05 3.2094
2.5222e-09 0 5 5 0 2.6484 -2.4713e-05 2.6484
2.7444e-09 0 5 5 0 2.1303 -2.5589e-05 2.1303
2.9667e-09 0 5 5 0 1.6752 -2.0975e-05 1.6752
3.1889e-09 0 5 5 0 1.2934 -1.9272e-05 1.2934
3.4111e-09 0 5 5 0 0.98397 -1.392e-05 0.98397
3.6333e-09 0 5 5 0 0.74008 -1.2492e-05 0.74008
3.8556e-09 0 5 5 0 0.55163 -8.0344e-06 0.55163
4.0778e-09 0 5 5 0 0.40856 -7.6005e-06 0.40856
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 4.0292e-18 5
1.25e-10 0 0 5 0 5 4.5068e-20 5
3.25e-10 0 0 5 0 5 4.7868e-19 5
5.25e-10 0 0 5 0 5 -4.9706e-19 5
7.25e-10 0 0 5 0 5 1.3461e-18 5
9.25e-10 0 0 5 0 5 -9.3074e-19 5
1e-09 0 0 5 0 5 2.4328e-18 5
1.2e-09 0 1 5 0 4.99 -0.00024884 4.99
1.3e-09 0 1.5 5 0 4.9652 -0.00027026 4.9652
1.5e-09 0 2.5 5 0 4.87 -0.00027677 4.87
1.7e-09 0 3.5 5 0 4.6739 -0.00028353 4.6739
1.9e-09 0 4.5 5 0 4.3542 -0.00010319 4.3542
2e-09 0 5 5 0 4.1475 -0.00024296 4.1475
2.1e-09 0 5 5 0 3.9259 -1.3923e-05 3.9259
2.3e-09 0 5 5 0 3.4846 -1.9111e-05 3.4846
2.5222e-09 0 5 5 0 3.0011 -1.9969e-05 3.0011
2.7444e-09 0 5 5 0 2.5363 -2.2446e-05 2.5363
2.9667e-09 0 5 5 0 2.1057 -1.9758e-05 2.1057
3.1889e-09 0 5 5 0 1.721 -1.9578e-05 1.721
3.4111e-09 0 5 5 0 1.3878 -1.5399e-05 1.3878
3.6333e-09 0 5 5 0 1.1068 -1.4563e-05 1.1068
3.8556e-09 0 5 5 0 0.8748 -1.0446e-05 0.8748
4.0778e-09 0 5 5 0 0.68657 -9.9709e-06 0.68657
4.3e-09 0 5 5 0 0.53586 -6.4707e-06 0.53586
4.5222e-09 0 5 5 0 0.41642 -6.5848e-06 0.41642
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 4.0834e-18 5
1.25e-10 0 0 5 0 5 3.0259e-19 5
3.25e-10 0 0 5 0 5 7.4971e-19 5
5.25e-10 0 0 5 0 5 -3.0723e-19 5
7.25e-10 0 0 5 0 5 9.1234e-19 5
9.25e-10 0 0 5 0 5 3.1595e-20 5
1e-09 0 0 5 0 5 -2.1749e-18 5
1.2e-09 0 1 5 0 4.9912 -0.00024871 4.9912
1.3e-09 0 1.5 5 0 4.9695 -0.00026962 4.9695
1.5e-09 0 2.5 5 0 4.8861 -0.00027498 4.8861
1.7e-09 0 3.5 5 0 4.7154 -0.00028187 4.7154
1.9e-09 0 4.5 5 0 4.4389 -0.00010743 4.4389
2e-09 0 5 5 0 4.2604 -0.00023541 4.2604
2.1e-09 0 5 5 0 4.0687 -1.0826e-05 4.0687
2.3e-09 0 5 5 0 3.6866 -1.5157e-05 3.6866
2.5222e-09 0 5 5 0 3.2653 -1.6241e-05 3.2653
2.7444e-09 0 5 5 0 2.852 -1.9041e-05 2.852
2.9667e-09 0 5 5 0 2.4564 -1.7859e-05 2.4564
3.1889e-09 0 5 5 0 2.0885 -1.842e-05 2.0885
3.4111e-09 0 5 5 0 1.7551 -1.5654e-05 1.7551
3.6333e-09 0 5 5 0 1.4602 -1.5197e-05 1.4602
3.8556e-09 0 5 5 0 1.2044 -1.1985e-05 1.2044
4.0778e-09 0 5 5 0 0.98637 -1.1421e-05 0.98637
4.3e-09 0 5 5 0 0.80305 -8.4115e-06 0.80305
4.5222e-09 0 5 5 0 0.65067 -8.1468e-06 0.65067
4.7444e-09 0 5 5 0 0.52515 -5.5533e-06 0.52515
4.9667e-09 0 5 5 0 0.42253 -5.6679e-06 0.42253
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 4.0292e-18 5
1.25e-10 0 0 5 0 5 2.4836e-19 5
3.25e-10 0 0 5 0 5 7.9046e-19 5
5.25e-10 0 0 5 0 5 -7.2743e-19 5
7.25e-10 0 0 5 0 5 1.6578e-18 5
9.25e-10 0 0 5 0 5 -8.3585e-19 5
1e-09 0 0 5 0 5 -1.6854e-19 5
1.2e-09 0 1 5 0 4.9921 -0.00024862 4.9921
1.3e-09 0 1.5 5 0 4.9729 -0.00026912 4.9729
1.5e-09 0 2.5 5 0 4.8987 -0.00027357 4.8987
1.7e-09 0 3.5 5 0 4.7475 -0.00028034 4.7475
1.9e-09 0 4.5 5 0 4.5039 -0.00011126 4.5039
2e-09 0 5 5 0 4.3467 -0.00022946 4.3467
2.1e-09 0 5 5 0 4.1779 -8.9428e-06 4.1779
2.3e-09 0 5 5 0 3.8411 -1.1965e-05 3.8411
2.5222e-09 0 5 5 0 3.469 -1.3747e-05 3.469
2.7444e-09 0 5 5 0 3.1006 -1.5649e-05 3.1006
2.9667e-09 0 5 5 0 2.7409 -1.6149e-05 2.7409
3.1889e-09 0 5 5 0 2.3973 -1.6374e-05 2.3973
3.4111e-09 0 5 5 0 2.0762 -1.5432e-05 2.0762
3.6333e-09 0 5 5 0 1.7821 -1.4613e-05 1.7821
3.8556e-09 0 5 5 0 1.5176 -1.2979e-05 1.5176
4.0778e-09 0 5 5 0 1.2836 -1.1804e-05 1.2836
4.3e-09 0 5 5 0 1.0793 -1.0051e-05 1.0793
4.5222e-09 0 5 5 0 0.90306 -8.9496e-06 0.90306
4.7444e-09 0 5 5 0 0.75246 -7.3716e-06 0.75246
4.9667e-09 0 5 5 0 0.62481 -6.5208e-06 0.62481
5.1889e-09 0 5 5 0 0.51733 -5.2094e-06 0.51733
5.4111e-09 0 5 5 0 0.42732 -4.6386e-06 0.42732
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 3.5955e-18 5
1.25e-10 0 0 5 0 5 3.7033e-19 5
3.25e-10 0 0 5 0 5 4.7868e-19 5
5.25e-10 0 0 5 0 5 -4.0219e-19 5
7.25e-10 0 0 5 0 5 9.1243e-19 5
9.25e-10 0 0 5 0 5 -2.8031e-19 5
1e-09 0 0 5 0 5 -1.0357e-18 5
1.2e-09 0 1 5 0 4.9929 -0.00024854 4.9929
1.3e-09 0 1.5 5 0 4.9756 -0.00026872 4.9756
1.5e-09 0 2.5 5 0 4.9088 -0.00027245 4.9088
1.7e-09 0 3.5 5 0 4.773 -0.000279 4.773
1.9e-09 0 4.5 5 0 4.5553 -0.00011461 4.5553
2e-09 0 5 5 0 4.4149 -0.00022444 4.4149
2.1e-09 0 5 5 0 4.2641 -7.9052e-06 4.2641
2.3e-09 0 5 5 0 3.9631 -9.2419e-06 3.9631
2.5222e-09 0 5 5 0 3.6301 -1.2157e-05 3.6301
2.7444e-09 0 5 5 0 3.2992 -1.2631e-05 3.2992
2.9667e-09 0 5 5 0 2.9726 -1.4665e-05 2.9726
3.1889e-09 0 5 5 0 2.655 -1.41e-05 2.655
3.4111e-09 0 5 5 0 2.3516 -1.4904e-05 2.3516
3.6333e-09 0 5 5 0 2.0667 -1.3411e-05 2.0667
3.8556e-09 0 5 5 0 1.8036 -1.3447e-05 1.8036
4.0778e-09 0 5 5 0 1.564 -1.1504e-05 1.564
4.3e-09 0 5 5 0 1.3487 -1.1218e-05 1.3487
4.5222e-09 0 5 5 0 1.1574 -9.1984e-06 1.1574
4.7444e-09 0 5 5 0 0.98905 -8.885e-06 0.98905
4.9667e-09 0 5 5 0 0.84214 -7.0018e-06 0.84214
5.1889e-09 0 5 5 0 0.71486 -6.8053e-06 0.71486
5.4111e-09 0 5 5 0 0.60524 -5.142e-06 0.60524
5.6333e-09 0 5 5 0 0.51129 -5.106e-06 0.51129
5.8556e-09 0 5 5 0 0.43113 -3.6721e-06 0.43113
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 3.5955e-18 5
1.25e-10 0 0 5 0 5 6.2783e-19 5
3.25e-10 0 0 5 0 5 1.2633e-19 5
5.25e-10 0 0 5 0 5 -6.3347e-20 5
7.25e-10 0 0 5 0 5 -9.1538e-21 5
9.25e-10 0 0 5 0 5 1.2242e-18 5
1e-09 0 0 5 0 5 -3.5301e-18 5
1.2e-09 0 1 5 0 4.9935 -0.00024847 4.9935
1.3e-09 0 1.5 5 0 4.9778 -0.00026839 4.9778
1.5e-09 0 2.5 5 0 4.917 -0.00027153 4.917
1.7e-09 0 3.5 5 0 4.7938 -0.00027782 4.7938
1.9e-09 0 4.5 5 0 4.597 -0.00011752 4.597
2e-09 0 5 5 0 4.4702 -0.00022019 4.4702
2.1e-09 0 5 5 0 4.334 -7.1728e-06 4.334
2.3e-09 0 5 5 0 4.0618 -7.3182e-06 4.0618
2.5222e-09 0 5 5 0 3.7606 -1.0737e-05 3.7606
2.7444e-09 0 5 5 0 3.4609 -1.043e-05 3.4609
2.9667e-09 0 5 5 0 3.1634 -1.3082e-05 3.1634
3.1889e-09 0 5 5 0 2.8708 -1.2219e-05 2.8708
3.4111e-09 0 5 5 0 2.5868 -1.3909e-05 2.5868
3.6333e-09 0 5 5 0 2.3154 -1.2262e-05 2.3154
3.8556e-09 0 5 5 0 2.0595 -1.3215e-05 2.0595
4.0778e-09 0 5 5 0 1.8214 -1.1099e-05 1.8214
4.3e-09 0 5 5 0 1.6025 -1.1636e-05 1.6025
4.5222e-09 0 5 5 0 1.4033 -9.3475e-06 1.4033
4.7444e-09 0 5 5 0 1.2239 -9.7254e-06 1.2239
4.9667e-09 0 5 5 0 1.0635 -7.471e-06 1.0635
5.1889e-09 0 5 5 0 0.92127 -7.8496e-06 0.92127
5.4111e-09 0 5 5 0 0.79588 -5.74e-06 0.79588
5.6333e-09 0 5 5 0 0.68593 -6.1952e-06 0.68593
5.8556e-09 0 5 5 0 0.58997 -4.2721e-06 0.58997
6.0778e-09 0 5 5 0 0.50655 -4.8262e-06 0.50655
6.3e-09 0 5 5 0 0.43428 -3.0913e-06 0.43428
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 3.5413e-18 5
1.25e-10 0 0 5 0 5 2.4834e-19 5
3.25e-10 0 0 5 0 5 8.4469e-19 5
5.25e-10 0 0 5 0 5 -5.5128e-19 5
7.25e-10 0 0 5 0 5 2.1322e-18 5
9.25e-10 0 0 5 0 5 -7.6945e-20 5
1e-09 0 0 5 0 5 -1.7953e-18 5
1.2e-09 0 1 5 0 4.994 -0.00024841 4.994
1.3e-09 0 1.5 5 0 4.9796 -0.00026812 4.9796
1.5e-09 0 2.5 5 0 4.9239 -0.00027076 4.9239
1.7e-09 0 3.5 5 0 4.8111 -0.00027679 4.8111
1.9e-09 0 4.5 5 0 4.6316 -0.00012007 4.6316
2e-09 0 5 5 0 4.516 -0.00021654 4.516
2.1e-09 0 5 5 0 4.3918 -6.5696e-06 4.3918
2.3e-09 0 5 5 0 4.1435 -6.0892e-06 4.1435
2.5222e-09 0 5 5 0 3.8685 -9.3209e-06 3.8685
2.7444e-09 0 5 5 0 3.5947 -8.9382e-06 3.5947
2.9667e-09 0 5 5 0 3.3223 -1.1503e-05 3.3223
3.1889e-09 0 5 5 0 3.0526 -1.073e-05 3.0526
3.4111e-09 0 5 5 0 2.7879 -1.2672e-05 2.7879
3.6333e-09 0 5 5 0 2.5315 -1.1251e-05 2.5315
3.8556e-09 0 5 5 0 2.286 -1.2532e-05 2.286
4.0778e-09 0 5 5 0 2.0538 -1.0665e-05 2.0538
4.3e-09 0 5 5 0 1.8363 -1.1505e-05 1.8363
4.5222e-09 0 5 5 0 1.6348 -9.4137e-06 1.6348
4.7444e-09 0 5 5 0 1.4497 -1.0021e-05 1.4497
4.9667e-09 0 5 5 0 1.281 -7.885e-06 1.281
5.1889e-09 0 5 5 0 1.1284 -8.4119e-06 1.1284
5.4111e-09 0 5 5 0 0.99129 -6.3476e-06 0.99129
5.6333e-09 0 5 5 0 0.86869 -6.8843e-06 0.86869
5.8556e-09 0 5 5 0 0.75963 -4.9525e-06 0.75963
6.0778e-09 0 5 5 0 0.66302 -5.5417e-06 0.66302
6.3e-09 0 5 5 0 0.57776 -3.7638e-06 0.57776
6.5222e-09 0 5 5 0 0.50275 -4.4176e-06 0.50275
6.7444e-09 0 5 5 0 0.43694 -2.7923e-06 0.43694
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 3.5955e-18 5
1.25e-10 0 0 5 0 5 6.2783e-19 5
3.25e-10 0 0 5 0 5 4.6514e-19 5
5.25e-10 0 0 5 0 5 9.9403e-20 5
7.25e-10 0 0 5 0 5 6.8195e-19 5
9.25e-10 0 0 5 0 5 -1.4457e-19 5
1e-09 0 0 5 0 5 4.7696e-20 5
1.2e-09 0 1 5 0 4.9945 -0.00024837 4.9945
1.3e-09 0 1.5 5 0 4.9812 -0.00026789 4.9812
1.5e-09 0 2.5 5 0 4.9297 -0.00027011 4.9297
1.7e-09 0 3.5 5 0 4.8258 -0.0002759 4.8258
1.9e-09 0 4.5 5 0 4.6606 -0.00012229 4.6606
2e-09 0 5 5 0 4.5544 -0.00021341 4.5544
2.1e-09 0 5 5 0 4.4402 -6.0642e-06 4.4402
2.3e-09 0 5 5 0 4.212 -5.3298e-06 4.212
2.5222e-09 0 5 5 0 3.9591 -7.956e-06 3.9591
2.7444e-09 0 5 5 0 3.7071 -7.9366e-06 3.7071
2.9667e-09 0 5 5 0 3.4562 -9.9962e-06 3.4562
3.1889e-09 0 5 5 0 3.2068 -9.6108e-06 3.2068
3.4111e-09 0 5 5 0 2.9603 -1.1306e-05 2.9603
3.6333e-09 0 5 5 0 2.7192 -1.0429e-05 2.7192
3.8556e-09 0 5 5 0 2.4856 -1.1556e-05 2.4856
4.0778e-09 0 5 5 0 2.2616 -1.0269e-05 2.2616
4.3e-09 0 5 5 0 2.049 -1.0976e-05 2.049
4.5222e-09 0 5 5 0 1.8489 -9.4386e-06 1.8489
4.7444e-09 0 5 5 0 1.6623 -9.8862e-06 1.6623
4.9667e-09 0 5 5 0 1.4894 -8.2444e-06 1.4894
5.1889e-09 0 5 5 0 1.3305 -8.5651e-06 1.3305
5.4111e-09 0 5 5 0 1.1853 -6.9289e-06 1.1853
5.6333e-09 0 5 5 0 1.0534 -7.2145e-06 1.0534
5.8556e-09 0 5 5 0 0.9341 -5.6526e-06 0.9341
6.0778e-09 0 5 5 0 0.82672 -5.9566e-06 0.82672
6.3e-09 0 5 5 0 0.73043 -4.5035e-06 0.73043
6.5222e-09 0 5 5 0 0.64438 -4.8508e-06 0.64438
6.7444e-09 0 5 5 0 0.56771 -3.5181e-06 0.56771
6.9667e-09 0 5 5 0 0.49958 -3.9154e-06 0.49958
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 4.0292e-18 5
1.25e-10 0 0 5 0 5 4.5068e-20 5
3.25e-10 0 0 5 0 5 6.2776e-19 5
5.25e-10 0 0 5 0 5 -4.5635e-19 5
7.25e-10 0 0 5 0 5 4.5158e-19 5
9.25e-10 0 0 5 0 5 7.2178e-20 5
1e-09 0 0 5 0 5 -1.4701e-18 5
1.2e-09 0 1 5 0 4.9949 -0.00024833 4.9949
1.3e-09 0 1.5 5 0 4.9825 -0.00026769 4.9825
1.5e-09 0 2.5 5 0 4.9347 -0.00026955 4.9347
1.7e-09 0 3.5 5 0 4.8383 -0.0002751 4.8383
1.9e-09 0 4.5 5 0 4.6854 -0.00012424 4.6854
2e-09 0 5 5 0 4.5871 -0.00021068 4.5871
2.1e-09 0 5 5 0 4.4815 -5.6346e-06 4.4815
2.3e-09 0 5 5 0 4.2703 -4.8737e-06 4.2703
2.5222e-09 0 5 5 0 4.0362 -6.6954e-06 4.0362
2.7444e-09 0 5 5 0 3.8028 -7.2454e-06 3.8028
2.9667e-09 0 5 5 0 3.5703 -8.6022e-06 3.5703
3.1889e-09 0 5 5 0 3.3389 -8.8149e-06 3.3389
3.4111e-09 0 5 5 0 3.1092 -9.887e-06 3.1092
3.6333e-09 0 5 5 0 2.8826 -9.8032e-06 2.8826
3.8556e-09 0 5 5 0 2.6613 -1.0406e-05 2.6613
4.0778e-09 0 5 5 0 2.4469 -9.946e-06 2.4469
4.3e-09 0 5 5 0 2.2411 -1.0177e-05 2.2411
4.5222e-09 0 5 5 0 2.0451 -9.4528e-06 2.0451
4.7444e-09 0 5 5 0 1.8598 -9.4312e-06 1.8598
4.9667e-09 0 5 5 0 1.686 -8.5573e-06 1.686
5.1889e-09 0 5 5 0 1.5239 -8.3927e-06 1.5239
5.4111e-09 0 5 5 0 1.3739 -7.466e-06 1.3739
5.6333e-09 0 5 5 0 1.2356 -7.2435e-06 1.2356
5.8556e-09 0 5 5 0 1.1088 -6.3328e-06 1.1088
6.0778e-09 0 5 5 0 0.99304 -6.1091e-06 0.99304
6.3e-09 0 5 5 0 0.88784 -5.2563e-06 0.88784
6.5222e-09 0 5 5 0 0.79253 -5.0637e-06 0.79253
6.7444e-09 0 5 5 0 0.70646 -4.2899e-06 0.70646
6.9667e-09 0 5 5 0 0.62896 -4.1433e-06 0.62896
7.1889e-09 0 5 5 0 0.55933 -3.4551e-06 0.55933
7.4111e-09 0 5 5 0 0.49693 -3.3578e-06 0.49693
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 3.5413e-18 5
1.25e-10 0 0 5 0 5 2.4834e-19 5
3.25e-10 0 0 5 0 5 9.1245e-19 5
5.25e-10 0 0 5 0 5 -4.971e-19 5
7.25e-10 0 0 5 0 5 1.3461e-18 5
9.25e-10 0 0 5 0 5 -7.1395e-19 5
1e-09 0 0 5 0 5 6.99e-19 5
1.2e-09 0 1 5 0 4.9952 -0.00024829 4.9952
1.3e-09 0 1.5 5 0 4.9836 -0.00026752 4.9836
1.5e-09 0 2.5 5 0 4.9391 -0.00026906 4.9391
1.7e-09 0 3.5 5 0 4.8491 -0.0002744 4.8491
1.9e-09 0 4.5 5 0 4.7068 -0.00012596 4.7068
2e-09 0 5 5 0 4.6154 -0.00020829 4.6154
2.1e-09 0 5 5 0 4.5171 -5.265e-06 4.5171
2.3e-09 0 5 5 0 4.3206 -4.5095e-06 4.3206
2.5222e-09 0 5 5 0 4.1027 -5.7614e-06 4.1027
2.7444e-09 0 5 5 0 3.8854 -6.5532e-06 3.8854
2.9667e-09 0 5 5 0 3.6688 -7.5404e-06 3.6688
3.1889e-09 0 5 5 0 3.4531 -8.0337e-06 3.4531
3.4111e-09 0 5 5 0 3.2384 -8.7493e-06 3.2384
3.6333e-09 0 5 5 0 3.0257 -9.0764e-06 3.0257
3.8556e-09 0 5 5 0 2.8163 -9.4406e-06 2.8163
4.0778e-09 0 5 5 0 2.612 -9.4352e-06 2.612
4.3e-09 0 5 5 0 2.414 -9.4731e-06 2.414
4.5222e-09 0 5 5 0 2.2236 -9.2114e-06 2.2236
4.7444e-09 0 5 5 0 2.0417 -9.0091e-06 2.0417
4.9667e-09 0 5 5 0 1.8692 -8.5787e-06 1.8692
5.1889e-09 0 5 5 0 1.7066 -8.2239e-06 1.7066
5.4111e-09 0 5 5 0 1.5542 -7.7059e-06 1.5542
5.6333e-09 0 5 5 0 1.412 -7.2733e-06 1.412
5.8556e-09 0 5 5 0 1.2802 -6.7317e-06 1.2802
6.0778e-09 0 5 5 0 1.1584 -6.2766e-06 1.1584
6.3e-09 0 5 5 0 1.0463 -5.7555e-06 1.0463
6.5222e-09 0 5 5 0 0.94356 -5.3139e-06 0.94356
6.7444e-09 0 5 5 0 0.84969 -4.8398e-06 0.84969
6.9667e-09 0 5 5 0 0.76417 -4.4321e-06 0.76417
7.1889e-09 0 5 5 0 0.68645 -4.0182e-06 0.68645
7.4111e-09 0 5 5 0 0.61598 -3.6532e-06 0.61598
7.6333e-09 0 5 5 0 0.55224 -3.3036e-06 0.55224
7.8556e-09 0 5 5 0 0.49467 -2.9831e-06 0.49467
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 3.5955e-18 5
1.25e-10 0 0 5 0 5 2.6191e-19 5
3.25e-10 0 0 5 0 5 8.446e-19 5
5.25e-10 0 0 5 0 5 -4.157e-19 5
7.25e-10 0 0 5 0 5 7.9037e-19 5
9.25e-10 0 0 5 0 5 -6.8672e-19 5
1e-09 0 0 5 0 5 6.9882e-19 5
1.2e-09 0 1 5 0 4.9955 -0.00024826 4.9955
1.3e-09 0 1.5 5 0 4.9847 -0.00026737 4.9847
1.5e-09 0 2.5 5 0 4.9429 -0.00026863 4.9429
1.7e-09 0 3.5 5 0 4.8586 -0.00027378 4.8586
1.9e-09 0 4.5 5 0 4.7255 -0.00012749 4.7255
2e-09 0 5 5 0 4.64 -0.00020618 4.64
2.1e-09 0 5 5 0 4.5481 -4.9435e-06 4.5481
2.3e-09 0 5 5 0 4.3644 -4.193e-06 4.3644
2.5222e-09 0 5 5 0 4.1606 -5.1129e-06 4.1606
2.7444e-09 0 5 5 0 3.9573 -5.8329e-06 3.9573
2.9667e-09 0 5 5 0 3.7546 -6.7712e-06 3.7546
3.1889e-09 0 5 5 0 3.5526 -7.2304e-06 3.5526
3.4111e-09 0 5 5 0 3.3514 -7.9189e-06 3.3514
3.6333e-09 0 5 5 0 3.1514 -8.231e-06 3.1514
3.8556e-09 0 5 5 0 2.9536 -8.7108e-06 2.9536
4.0778e-09 0 5 5 0 2.7592 -8.743e-06 2.7592
4.3e-09 0 5 5 0 2.5695 -8.9299e-06 2.5695
4.5222e-09 0 5 5 0 2.3856 -8.7321e-06 2.3856
4.7444e-09 0 5 5 0 2.2085 -8.6882e-06 2.2085
4.9667e-09 0 5 5 0 2.0389 -8.3252e-06 2.0389
5.1889e-09 0 5 5 0 1.8775 -8.1193e-06 1.8775
5.4111e-09 0 5 5 0 1.7247 -7.6566e-06 1.7247
5.6333e-09 0 5 5 0 1.5808 -7.3522e-06 1.5808
5.8556e-09 0 5 5 0 1.4459 -6.846e-06 1.4459
6.0778e-09 0 5 5 0 1.32 -6.4943e-06 1.32
6.3e-09 0 5 5 0 1.203 -5.9873e-06 1.203
6.5222e-09 0 5 5 0 1.0946 -5.6253e-06 1.0946
6.7444e-09 0 5 5 0 0.99449 -5.1462e-06 0.99449
6.9667e-09 0 5 5 0 0.90234 -4.7975e-06 0.90234
7.1889e-09 0 5 5 0 0.81775 -4.3632e-06 0.81775
7.4111e-09 0 5 5 0 0.74028 -4.0413e-06 0.74028
7.6333e-09 0 5 5 0 0.66949 -3.6601e-06 0.66949
7.8556e-09 0 5 5 0 0.60493 -3.3709e-06 0.60493
8.0778e-09 0 5 5 0 0.54616 -3.0448e-06 0.54616
8.3e-09 0 5 5 0 0.49273 -2.7893e-06 0.49273
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 1.8066e-18 5
1.25e-10 0 0 5 0 5 4.5163e-19 5
3.25e-10 0 0 5 0 5 -3.073e-19 5
5.25e-10 0 0 5 0 5 9.9374e-19 5
7.25e-10 0 0 5 0 5 -9.0458e-20 5
9.25e-10 0 0 5 0 5 6.6848e-19 5
1e-09 0 0 5 0 5 2.6466e-19 5
1.2e-09 0 1 5 0 4.9958 -0.00024823 4.9958
1.3e-09 0 1.5 5 0 4.9856 -0.00026724 4.9856
1.5e-09 0 2.5 5 0 4.9462 -0.00026826 4.9462
1.7e-09 0 3.5 5 0 4.8669 -0.00027322 4.8669
1.9e-09 0 4.5 5 0 4.7419 -0.00012886 4.7419
2e-09 0 5 5 0 4.6617 -0.00020429 4.6617
2.1e-09 0 5 5 0 4.5754 -4.6614e-06 4.5754
2.3e-09 0 5 5 0 4.4029 -3.9154e-06 4.4029
2.5222e-09 0 5 5 0 4.2115 -4.6769e-06 4.2115
2.7444e-09 0 5 5 0 4.0206 -5.1065e-06 4.0206
2.9667e-09 0 5 5 0 3.8301 -6.2223e-06 3.8301
3.1889e-09 0 5 5 0 3.6402 -6.4268e-06 3.6402
3.4111e-09 0 5 5 0 3.4509 -7.3137e-06 3.4509
3.6333e-09 0 5 5 0 3.2625 -7.3721e-06 3.2625
3.8556e-09 0 5 5 0 3.0754 -8.1252e-06 3.0754
4.0778e-09 0 5 5 0 2.8907 -7.9879e-06 2.8907
4.3e-09 0 5 5 0 2.7094 -8.4762e-06 2.7094
4.5222e-09 0 5 5 0 2.5325 -8.1402e-06 2.5325
4.7444e-09 0 5 5 0 2.3609 -8.4079e-06 2.3609
4.9667e-09 0 5 5 0 2.1953 -7.9209e-06 2.1953
5.1889e-09 0 5 5 0 2.0365 -8.0207e-06 2.0365
5.4111e-09 0 5 5 0 1.8848 -7.4342e-06 1.8848
5.6333e-09 0 5 5 0 1.7408 -7.4187e-06 1.7408
5.8556e-09 0 5 5 0 1.6045 -6.7806e-06 1.6045
6.0778e-09 0 5 5 0 1.4762 -6.6956e-06 1.4762
6.3e-09 0 5 5 0 1.3559 -6.0449e-06 1.3559
6.5222e-09 0 5 5 0 1.2433 -5.9258e-06 1.2433
6.7444e-09 0 5 5 0 1.1385 -5.2912e-06 1.1385
6.9667e-09 0 5 5 0 1.0411 -5.1635e-06 1.0411
7.1889e-09 0 5 5 0 0.95087 -4.5638e-06 0.95087
7.4111e-09 0 5 5 0 0.8675 -4.4438e-06 0.8675
7.6333e-09 0 5 5 0 0.79063 -3.89e-06 0.79063
7.8556e-09 0 5 5 0 0.7199 -3.7869e-06 0.7199
8.0778e-09 0 5 5 0 0.65495 -3.284e-06 0.65495
8.3e-09 0 5 5 0 0.5954 -3.2019e-06 0.5954
8.5222e-09 0 5 5 0 0.54088 -2.7507e-06 0.54088
8.7444e-09 0 5 5 0 0.49105 -2.6905e-06 0.49105
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 1.8066e-18 5
1.25e-10 0 0 5 0 5 -2.2599e-19 5
3.25e-10 0 0 5 0 5 1.1699e-18 5
5.25e-10 0 0 5 0 5 -9.0353e-19 5
7.25e-10 0 0 5 0 5 1.2376e-18 5
9.25e-10 0 0 5 0 5 -7.1382e-19 5
1e-09 0 0 5 0 5 -6.0905e-20 5
1.2e-09 0 1 5 0 4.996 -0.00024821 4.996
1.3e-09 0 1.5 5 0 4.9864 -0.00026712 4.9864
1.5e-09 0 2.5 5 0 4.9492 -0.00026792 4.9492
1.7e-09 0 3.5 5 0 4.8743 -0.00027272 4.8743
1.9e-09 0 4.5 5 0 4.7564 -0.0001301 4.7564
2e-09 0 5 5 0 4.6809 -0.00020261 4.6809
2.1e-09 0 5 5 0 4.5995 -4.4119e-06 4.5995
2.3e-09 0 5 5 0 4.437 -3.6699e-06 4.437
2.5222e-09 0 5 5 0 4.2566 -4.3972e-06 4.2566
2.7444e-09 0 5 5 0 4.0766 -4.3938e-06 4.0766
2.9667e-09 0 5 5 0 3.8969 -5.8352e-06 3.8969
3.1889e-09 0 5 5 0 3.7178 -5.6425e-06 3.7178
3.4111e-09 0 5 5 0 3.5392 -6.87e-06 3.5392
3.6333e-09 0 5 5 0 3.3612 -6.5512e-06 3.3612
3.8556e-09 0 5 5 0 3.1842 -7.636e-06 3.1842
4.0778e-09 0 5 5 0 3.0086 -7.2306e-06 3.0086
4.3e-09 0 5 5 0 2.8355 -8.0784e-06 2.8355
4.5222e-09 0 5 5 0 2.6657 -7.5052e-06 2.6657
4.7444e-09 0 5 5 0 2.5 -8.1439e-06 2.5
4.9667e-09 0 5 5 0 2.3391 -7.4378e-06 2.3391
5.1889e-09 0 5 5 0 2.1838 -7.9071e-06 2.1838
5.4111e-09 0 5 5 0 2.0344 -7.1085e-06 2.0344
5.6333e-09 0 5 5 0 1.8914 -7.4506e-06 1.8914
5.8556e-09 0 5 5 0 1.7551 -6.5992e-06 1.7551
6.0778e-09 0 5 5 0 1.6258 -6.8538e-06 1.6258
6.3e-09 0 5 5 0 1.5035 -5.9842e-06 1.5035
6.5222e-09 0 5 5 0 1.3882 -6.1842e-06 1.3882
6.7444e-09 0 5 5 0 1.2799 -5.3236e-06 1.2799
6.9667e-09 0 5 5 0 1.1786 -5.4944e-06 1.1786
7.1889e-09 0 5 5 0 1.0839 -4.6622e-06 1.0839
7.4111e-09 0 5 5 0 0.99569 -4.8215e-06 0.99569
7.6333e-09 0 5 5 0 0.91372 -4.0303e-06 0.91372
7.8556e-09 0 5 5 0 0.8377 -4.1897e-06 0.8377
8.0778e-09 0 5 5 0 0.76734 -3.4465e-06 0.76734
8.3e-09 0 5 5 0 0.70232 -3.6127e-06 0.70232
8.5222e-09 0 5 5 0 0.64234 -2.9204e-06 0.64234
8.7444e-09 0 5 5 0 0.5871 -3.0966e-06 0.5871
8.9667e-09 0 5 5 0 0.53627 -2.4552e-06 0.53627
9.1889e-09 0 5 5 0 0.48958 -2.6422e-06 0.48958
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 3.5955e-18 5
1.25e-10 0 0 5 0 5 2.6191e-19 5
3.25e-10 0 0 5 0 5 9.5302e-19 5
5.25e-10 0 0 5 0 5 -3.0728e-19 5
7.25e-10 0 0 5 0 5 6.955e-19 5
9.25e-10 0 0 5 0 5 -4.5634e-19 5
1e-09 0 0 5 0 5 -6.0319e-19 5
1.2e-09 0 1 5 0 4.9962 -0.00024819 4.9962
1.3e-09 0 1.5 5 0 4.9871 -0.00026701 4.9871
1.5e-09 0 2.5 5 0 4.9519 -0.00026762 4.9519
1.7e-09 0 3.5 5 0 4.8809 -0.00027227 4.8809
1.9e-09 0 4.5 5 0 4.7694 -0.00013121 4.7694
2e-09 0 5 5 0 4.698 -0.0002011 4.698
2.1e-09 0 5 5 0 4.6211 -4.1896e-06 4.6211
2.3e-09 0 5 5 0 4.4674 -3.4513e-06 4.4674
2.5222e-09 0 5 5 0 4.2968 -4.1751e-06 4.2968
2.7444e-09 0 5 5 0 4.1265 -3.8228e-06 4.1265
2.9667e-09 0 5 5 0 3.9565 -5.4523e-06 3.9565
3.1889e-09 0 5 5 0 3.787 -5.0033e-06 3.787
3.4111e-09 0 5 5 0 3.6179 -6.434e-06 3.6179
3.6333e-09 0 5 5 0 3.4494 -5.8776e-06 3.4494
3.8556e-09 0 5 5 0 3.2815 -7.1554e-06 3.2815
4.0778e-09 0 5 5 0 3.1146 -6.563e-06 3.1146
4.3e-09 0 5 5 0 2.9494 -7.6595e-06 2.9494
4.5222e-09 0 5 5 0 2.7866 -6.9268e-06 2.7866
4.7444e-09 0 5 5 0 2.627 -7.8273e-06 2.627
4.9667e-09 0 5 5 0 2.4712 -6.9796e-06 2.4712
5.1889e-09 0 5 5 0 2.3199 -7.7139e-06 2.3199
5.4111e-09 0 5 5 0 2.1735 -6.7824e-06 2.1735
5.6333e-09 0 5 5 0 2.0325 -7.3841e-06 2.0325
5.8556e-09 0 5 5 0 1.8972 -6.4012e-06 1.8972
6.0778e-09 0 5 5 0 1.7679 -6.9038e-06 1.7679
6.3e-09 0 5 5 0 1.6448 -5.8992e-06 1.6448
6.5222e-09 0 5 5 0 1.528 -6.3324e-06 1.528
6.7444e-09 0 5 5 0 1.4175 -5.331e-06 1.4175
6.9667e-09 0 5 5 0 1.3133 -5.7189e-06 1.3133
7.1889e-09 0 5 5 0 1.2152 -4.7397e-06 1.2152
7.4111e-09 0 5 5 0 1.1232 -5.1007e-06 1.1232
7.6333e-09 0 5 5 0 1.0371 -4.157e-06 1.0371
7.8556e-09 0 5 5 0 0.95667 -4.504e-06 0.95667
8.0778e-09 0 5 5 0 0.88169 -3.6042e-06 0.88169
8.3e-09 0 5 5 0 0.81192 -3.9457e-06 0.81192
8.5222e-09 0 5 5 0 0.7471 -3.0942e-06 0.7471
8.7444e-09 0 5 5 0 0.68698 -3.4352e-06 0.68698
8.9667e-09 0 5 5 0 0.6313 -2.6335e-06 0.6313
9.1889e-09 0 5 5 0 0.57979 -2.9766e-06 0.57979
9.4111e-09 0 5 5 0 0.53219 -2.2242e-06 0.53219
9.6333e-09 0 5 5 0 0.48826 -2.5702e-06 0.48826
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 3.5413e-18 5
1.25e-10 0 0 5 0 5 -4.0218e-19 5
3.25e-10 0 0 5 0 5 2.1051e-18 5
5.25e-10 0 0 5 0 5 -1.6897e-18 5
7.25e-10 0 0 5 0 5 2.3219e-18 5
9.25e-10 0 0 5 0 5 -1.7981e-18 5
1e-09 0 0 5 0 5 1.5664e-18 5
1.2e-09 0 1 5 0 4.9964 -0.00024817 4.9964
1.3e-09 0 1.5 5 0 4.9877 -0.00026692 4.9877
1.5e-09 0 2.5 5 0 4.9543 -0.00026735 4.9543
1.7e-09 0 3.5 5 0 4.8869 -0.00027185 4.8869
1.9e-09 0 4.5 5 0 4.7811 -0.00013222 4.7811
2e-09 0 5 5 0 4.7133 -0.00019972 4.7133
2.1e-09 0 5 5 0 4.6404 -3.9903e-06 4.6404
2.3e-09 0 5 5 0 4.4946 -3.2553e-06 4.4946
2.5222e-09 0 5 5 0 4.3329 -3.9759e-06 4.3329
2.7444e-09 0 5 5 0 4.1713 -3.4097e-06 4.1713
2.9667e-09 0 5 5 0 4.0101 -5.033e-06 4.0101
3.1889e-09 0 5 5 0 3.8492 -4.525e-06 3.8492
3.4111e-09 0 5 5 0 3.6887 -5.9658e-06 3.6887
3.6333e-09 0 5 5 0 3.5286 -5.3633e-06 3.5286
3.8556e-09 0 5 5 0 3.3691 -6.6596e-06 3.3691
4.0778e-09 0 5 5 0 3.2103 -6.0108e-06 3.2103
4.3e-09 0 5 5 0 3.0526 -7.1997e-06 3.0526
4.5222e-09 0 5 5 0 2.8966 -6.4374e-06 2.8966
4.7444e-09 0 5 5 0 2.7431 -7.4453e-06 2.7431
4.9667e-09 0 5 5 0 2.5925 -6.5835e-06 2.5925
5.1889e-09 0 5 5 0 2.4456 -7.4327e-06 2.4456
5.4111e-09 0 5 5 0 2.3027 -6.495e-06 2.3027
5.6333e-09 0 5 5 0 2.1643 -7.2121e-06 2.1643
5.8556e-09 0 5 5 0 2.0308 -6.2244e-06 2.0308
6.0778e-09 0 5 5 0 1.9025 -6.8374e-06 1.9025
6.3e-09 0 5 5 0 1.7795 -5.8249e-06 1.7795
6.5222e-09 0 5 5 0 1.6621 -6.3599e-06 1.6621
6.7444e-09 0 5 5 0 1.5503 -5.3446e-06 1.5503
6.9667e-09 0 5 5 0 1.4442 -5.8239e-06 1.4442
7.1889e-09 0 5 5 0 1.3438 -4.8238e-06 1.3438
7.4111e-09 0 5 5 0 1.2489 -5.2655e-06 1.2489
7.6333e-09 0 5 5 0 1.1595 -4.2939e-06 1.1595
7.8556e-09 0 5 5 0 1.0755 -4.7115e-06 1.0755
8.0778e-09 0 5 5 0 0.99669 -3.7775e-06 0.99669
8.3e-09 0 5 5 0 0.92287 -4.1807e-06 0.92287
8.5222e-09 0 5 5 0 0.85386 -3.2899e-06 0.85386
8.7444e-09 0 5 5 0 0.78944 -3.685e-06 0.78944
8.9667e-09 0 5 5 0 0.7294 -2.8401e-06 0.7294
9.1889e-09 0 5 5 0 0.67352 -3.2311e-06 0.67352
9.4111e-09 0 5 5 0 0.62157 -2.4328e-06 0.62157
9.6333e-09 0 5 5 0 0.57333 -2.8217e-06 0.57333
9.8556e-09 0 5 5 0 0.52858 -2.0692e-06 0.52858
1.0078e-08 0 5 5 0 0.48711 -2.4568e-06 0.48711
0 0 0 5 0 5 0 5
2.5e-11 0 0 5 0 5 1.8066e-18 5
1.25e-10 0 0 5 0 5 6.8203e-19 5
3.25e-10 0 0 5 0 5 5.8719e-19 5
5.25e-10 0 0 5 0 5 -3.8868e-19 5
7.25e-10 0 0 5 0 5 1.0209e-18 5
9.25e-10 0 0 5 0 5 -8.2237e-19 5
1e-09 0 0 5 0 5 1.5664e-18 5
1.2e-09 0 1 5 0 4.9966 -0.00024815 4.9966
1.3e-09 0 1.5 5 0 4.9883 -0.00026683 4.9883
1.5e-09 0 2.5 5 0 4.9564 -0.00026711 4.9564
1.7e-09 0 3.5 5 0 4.8923 -0.00027148 4.8923
1.9e-09 0 4.5 5 0 4.7917 -0.00013315 4.7917
2e-09 0 5 5 0 4.7272 -0.00019847 4.7272
2.1e-09 0 5 5 0 4.6579 -3.8106e-06 4.6579
2.3e-09 0 5 5 0 4.5193 -3.0787e-06 4.5193
2.5222e-09 0 5 5 0 4.3654 -3.7963e-06 4.3654
2.7444e-09 0 5 5 0 4.2118 -3.1211e-06 4.2118
2.9667e-09 0 5 5 0 4.0584 -4.591e-06 4.0584
3.1889e-09 0 5 5 0 3.9053 -4.1746e-06 3.9053
3.4111e-09 0 5 5 0 3.7525 -5.4787e-06 3.7525
3.6333e-09 0 5 5 0 3.6002 -4.9764e-06 3.6002
3.8556e-09 0 5 5 0 3.4483 -6.1485e-06 3.4483
4.0778e-09 0 5 5 0 3.2969 -5.5909e-06 3.2969
4.3e-09 0 5 5 0 3.1462 -6.6843e-06 3.1462
4.5222e-09 0 5 5 0 2.9969 -6.0582e-06 2.9969
4.7444e-09 0 5 5 0 2.8493 -6.9898e-06 2.8493
4.9667e-09 0 5 5 0 2.704 -6.2738e-06 2.704
5.1889e-09 0 5 5 0 2.5617 -7.06e-06 2.5617
5.4111e-09 0 5 5 0 2.4226 -6.2721e-06 2.4226
5.6333e-09 0 5 5 0 2.2873 -6.9338e-06 2.2873
5.8556e-09 0 5 5 0 2.1561 -6.0944e-06 2.1561
6.0778e-09 0 5 5 0 2.0294 -6.6545e-06 2.0294
6.3e-09 0 5 5 0 1.9073 -5.7847e-06 1.9073
6.5222e-09 0 5 5 0 1.79 -6.2656e-06 1.79
6.7444e-09 0 5 5 0 1.6778 -5.3849e-06 1.6778
6.9667e-09 0 5 5 0 1.5707 -5.8067e-06 1.5707
7.1889e-09 0 5 5 0 1.4686 -4.9315e-06 1.4686
7.4111e-09 0 5 5 0 1.3717 -5.3113e-06 1.3717
7.6333e-09 0 5 5 0 1.2799 -4.4546e-06 1.2799
7.8556e-09 0 5 5 0 1.1931 -4.8058e-06 1.1931
8.0778e-09 0 5 5 0 1.1112 -3.9771e-06 1.1112
8.3e-09 0 5 5 0 1.034 -4.3098e-06 1.034
8.5222e-09 0 5 5 0 0.96142 -3.5157e-06 0.96142
8.7444e-09 0 5 5 0 0.89329 -3.837e-06 0.89329
8.9667e-09 0 5 5 0 0.82943 -3.0812e-06 0.82943
9.1889e-09 0 5 5 0 0.76966 -3.3959e-06 0.76966
9.4111e-09 0 5 5 0 0.71378 -2.6803e-06 0.71378
9.6333e-09 0 5 5 0 0.6616 -2.9913e-06 0.6616
9.8556e-09 0 5 5 0 0.61292 -2.3161e-06 0.61292
1.0078e-08 0 5 5 0 0.56757 -2.6251e-06 0.56757
1.03e-08 0 5 5 0 0.52534 -1.9896e-06 0.52534
1.0522e-08 0 5 5 0 0.48607 -2.2972e-06 0.48607

10001
examples/rlc_lpf_trans.dat Normal file

File diff suppressed because it is too large Load Diff

BIN
examples/tm.tr0 Normal file

Binary file not shown.

BIN
examples/tran.tr0 Normal file

Binary file not shown.

BIN
examples/tran_sweep.tr0 Normal file

Binary file not shown.

BIN
examples/xbuf646.raw Normal file

Binary file not shown.

9
gaw.desktop Normal file
View File

@ -0,0 +1,9 @@
[Desktop Entry]
Name=Gaw Gtk Analog Wave viewer
Comment=Gtk Analog Wave viewer
Exec=gaw
Icon=gaw.png
Terminal=false
Type=Application
MimeType=text/plain;
Categories=GTK;Graphics;

BIN
gaw.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

527
install-sh Executable file
View File

@ -0,0 +1,527 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2011-11-20.07; # UTC
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the
# following copyright and license.
#
# Copyright (C) 1994 X Consortium
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the X Consortium shall not
# be used in advertising or otherwise to promote the sale, use or other deal-
# ings in this Software without prior written authorization from the X Consor-
# tium.
#
#
# FSF changes to this file are in the public domain.
#
# Calling this script install-sh is preferred over install.sh, to prevent
# 'make' implicit rules from creating a file called install from it
# when there is no Makefile.
#
# This script is compatible with the BSD install script, but was written
# from scratch.
nl='
'
IFS=" "" $nl"
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit=${DOITPROG-}
if test -z "$doit"; then
doit_exec=exec
else
doit_exec=$doit
fi
# Put in absolute file names if you don't have them in your path;
# or use environment vars.
chgrpprog=${CHGRPPROG-chgrp}
chmodprog=${CHMODPROG-chmod}
chownprog=${CHOWNPROG-chown}
cmpprog=${CMPPROG-cmp}
cpprog=${CPPROG-cp}
mkdirprog=${MKDIRPROG-mkdir}
mvprog=${MVPROG-mv}
rmprog=${RMPROG-rm}
stripprog=${STRIPPROG-strip}
posix_glob='?'
initialize_posix_glob='
test "$posix_glob" != "?" || {
if (set -f) 2>/dev/null; then
posix_glob=
else
posix_glob=:
fi
}
'
posix_mkdir=
# Desired mode of installed file.
mode=0755
chgrpcmd=
chmodcmd=$chmodprog
chowncmd=
mvcmd=$mvprog
rmcmd="$rmprog -f"
stripcmd=
src=
dst=
dir_arg=
dst_arg=
copy_on_change=false
no_target_directory=
usage="\
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
or: $0 [OPTION]... SRCFILES... DIRECTORY
or: $0 [OPTION]... -t DIRECTORY SRCFILES...
or: $0 [OPTION]... -d DIRECTORIES...
In the 1st form, copy SRCFILE to DSTFILE.
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
In the 4th, create DIRECTORIES.
Options:
--help display this help and exit.
--version display version info and exit.
-c (ignored)
-C install only if different (preserve the last data modification time)
-d create directories instead of installing files.
-g GROUP $chgrpprog installed files to GROUP.
-m MODE $chmodprog installed files to MODE.
-o USER $chownprog installed files to USER.
-s $stripprog installed files.
-t DIRECTORY install into DIRECTORY.
-T report an error if DSTFILE is a directory.
Environment variables override the default commands:
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
RMPROG STRIPPROG
"
while test $# -ne 0; do
case $1 in
-c) ;;
-C) copy_on_change=true;;
-d) dir_arg=true;;
-g) chgrpcmd="$chgrpprog $2"
shift;;
--help) echo "$usage"; exit $?;;
-m) mode=$2
case $mode in
*' '* | *' '* | *'
'* | *'*'* | *'?'* | *'['*)
echo "$0: invalid mode: $mode" >&2
exit 1;;
esac
shift;;
-o) chowncmd="$chownprog $2"
shift;;
-s) stripcmd=$stripprog;;
-t) dst_arg=$2
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
shift;;
-T) no_target_directory=true;;
--version) echo "$0 $scriptversion"; exit $?;;
--) shift
break;;
-*) echo "$0: invalid option: $1" >&2
exit 1;;
*) break;;
esac
shift
done
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
# When -d is used, all remaining arguments are directories to create.
# When -t is used, the destination is already specified.
# Otherwise, the last argument is the destination. Remove it from $@.
for arg
do
if test -n "$dst_arg"; then
# $@ is not empty: it contains at least $arg.
set fnord "$@" "$dst_arg"
shift # fnord
fi
shift # arg
dst_arg=$arg
# Protect names problematic for 'test' and other utilities.
case $dst_arg in
-* | [=\(\)!]) dst_arg=./$dst_arg;;
esac
done
fi
if test $# -eq 0; then
if test -z "$dir_arg"; then
echo "$0: no input file specified." >&2
exit 1
fi
# It's OK to call 'install-sh -d' without argument.
# This can happen when creating conditional directories.
exit 0
fi
if test -z "$dir_arg"; then
do_exit='(exit $ret); exit $ret'
trap "ret=129; $do_exit" 1
trap "ret=130; $do_exit" 2
trap "ret=141; $do_exit" 13
trap "ret=143; $do_exit" 15
# Set umask so as not to create temps with too-generous modes.
# However, 'strip' requires both read and write access to temps.
case $mode in
# Optimize common cases.
*644) cp_umask=133;;
*755) cp_umask=22;;
*[0-7])
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw='% 200'
fi
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
*)
if test -z "$stripcmd"; then
u_plus_rw=
else
u_plus_rw=,u+rw
fi
cp_umask=$mode$u_plus_rw;;
esac
fi
for src
do
# Protect names problematic for 'test' and other utilities.
case $src in
-* | [=\(\)!]) src=./$src;;
esac
if test -n "$dir_arg"; then
dst=$src
dstdir=$dst
test -d "$dstdir"
dstdir_status=$?
else
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
# might cause directories to be created, which would be especially bad
# if $src (and thus $dsttmp) contains '*'.
if test ! -f "$src" && test ! -d "$src"; then
echo "$0: $src does not exist." >&2
exit 1
fi
if test -z "$dst_arg"; then
echo "$0: no destination specified." >&2
exit 1
fi
dst=$dst_arg
# If destination is a directory, append the input filename; won't work
# if double slashes aren't ignored.
if test -d "$dst"; then
if test -n "$no_target_directory"; then
echo "$0: $dst_arg: Is a directory" >&2
exit 1
fi
dstdir=$dst
dst=$dstdir/`basename "$src"`
dstdir_status=0
else
# Prefer dirname, but fall back on a substitute if dirname fails.
dstdir=`
(dirname "$dst") 2>/dev/null ||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
X"$dst" : 'X\(//\)[^/]' \| \
X"$dst" : 'X\(//\)$' \| \
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
echo X"$dst" |
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
s//\1/
q
}
/^X\(\/\/\)[^/].*/{
s//\1/
q
}
/^X\(\/\/\)$/{
s//\1/
q
}
/^X\(\/\).*/{
s//\1/
q
}
s/.*/./; q'
`
test -d "$dstdir"
dstdir_status=$?
fi
fi
obsolete_mkdir_used=false
if test $dstdir_status != 0; then
case $posix_mkdir in
'')
# Create intermediate dirs using mode 755 as modified by the umask.
# This is like FreeBSD 'install' as of 1997-10-28.
umask=`umask`
case $stripcmd.$umask in
# Optimize common cases.
*[2367][2367]) mkdir_umask=$umask;;
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
*[0-7])
mkdir_umask=`expr $umask + 22 \
- $umask % 100 % 40 + $umask % 20 \
- $umask % 10 % 4 + $umask % 2
`;;
*) mkdir_umask=$umask,go-w;;
esac
# With -d, create the new directory with the user-specified mode.
# Otherwise, rely on $mkdir_umask.
if test -n "$dir_arg"; then
mkdir_mode=-m$mode
else
mkdir_mode=
fi
posix_mkdir=false
case $umask in
*[123567][0-7][0-7])
# POSIX mkdir -p sets u+wx bits regardless of umask, which
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
;;
*)
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
if (umask $mkdir_umask &&
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
then
if test -z "$dir_arg" || {
# Check for POSIX incompatibilities with -m.
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
# other-writable bit of parent directory when it shouldn't.
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
ls_ld_tmpdir=`ls -ld "$tmpdir"`
case $ls_ld_tmpdir in
d????-?r-*) different_mode=700;;
d????-?--*) different_mode=755;;
*) false;;
esac &&
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
}
}
then posix_mkdir=:
fi
rmdir "$tmpdir/d" "$tmpdir"
else
# Remove any dirs left behind by ancient mkdir implementations.
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
fi
trap '' 0;;
esac;;
esac
if
$posix_mkdir && (
umask $mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
)
then :
else
# The umask is ridiculous, or mkdir does not conform to POSIX,
# or it failed possibly due to a race condition. Create the
# directory the slow way, step by step, checking for races as we go.
case $dstdir in
/*) prefix='/';;
[-=\(\)!]*) prefix='./';;
*) prefix='';;
esac
eval "$initialize_posix_glob"
oIFS=$IFS
IFS=/
$posix_glob set -f
set fnord $dstdir
shift
$posix_glob set +f
IFS=$oIFS
prefixes=
for d
do
test X"$d" = X && continue
prefix=$prefix$d
if test -d "$prefix"; then
prefixes=
else
if $posix_mkdir; then
(umask=$mkdir_umask &&
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
# Don't fail if two instances are running concurrently.
test -d "$prefix" || exit 1
else
case $prefix in
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
*) qprefix=$prefix;;
esac
prefixes="$prefixes '$qprefix'"
fi
fi
prefix=$prefix/
done
if test -n "$prefixes"; then
# Don't fail if two instances are running concurrently.
(umask $mkdir_umask &&
eval "\$doit_exec \$mkdirprog $prefixes") ||
test -d "$dstdir" || exit 1
obsolete_mkdir_used=true
fi
fi
fi
if test -n "$dir_arg"; then
{ test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
{ test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
else
# Make a couple of temp file names in the proper directory.
dsttmp=$dstdir/_inst.$$_
rmtmp=$dstdir/_rm.$$_
# Trap to clean up those temp files at exit.
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
# Copy the file name to the temp name.
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
# and set any options; do chmod last to preserve setuid bits.
#
# If any of these fail, we abort the whole thing. If we want to
# ignore errors from any of these, just make sure not to ignore
# errors from the above "$doit $cpprog $src $dsttmp" command.
#
{ test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
{ test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
{ test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
{ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
# If -C, don't bother to copy if it wouldn't change the file.
if $copy_on_change &&
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
eval "$initialize_posix_glob" &&
$posix_glob set -f &&
set X $old && old=:$2:$4:$5:$6 &&
set X $new && new=:$2:$4:$5:$6 &&
$posix_glob set +f &&
test "$old" = "$new" &&
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
then
rm -f "$dsttmp"
else
# Rename the file to the real destination.
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
# The rename failed, perhaps because mv can't rename something else
# to itself, or perhaps because mv is so ancient that it does not
# support -f.
{
# Now remove or move aside any old file at destination location.
# We try this two ways since rm can't unlink itself on some
# systems and the destination file might be busy for other
# reasons. In this case, the final cleanup might fail but the new
# file should still install successfully.
{
test ! -f "$dst" ||
$doit $rmcmd -f "$dst" 2>/dev/null ||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
} ||
{ echo "$0: cannot unlink or rename $dst" >&2
(exit 1); exit 1
}
} &&
# Now rename the file to the real destination.
$doit $mvcmd "$dsttmp" "$dst"
}
fi || exit 1
trap '' 0
fi
done
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
# time-stamp-end: "; # UTC"
# End:

29
lib/Makefile.am Normal file
View File

@ -0,0 +1,29 @@
if CCISGCC
AM_CFLAGS = -Wall
endif
noinst_LIBRARIES = libload.a
libload_a_SOURCES = spicestream.c ss_cazm.c ss_nsout.c ss_spice3.c \
ss_hspice.c ss_spice2.c ss_wav.c fileformat.c util.c \
fdbuf.c dbuf.c msglog.c appmem.c appclass.c dataset.c \
wavevar.c wavetable.c sndstream.c sndparams.c sockcon.c fdsel.c \
fdbuf.h dbuf.h msglog.h appmem.h appclass.h dataset.h \
wavevar.h wavetable.h sndstream.h sndparams.h ss_wav.h \
spicestream.h fileformat.h util.h sockcon.h fdsel.h bswap.h \
stutil.c stutil.h fsutil.c fsutil.h strcatdup.c strcatdup.h \
incvar.c incvar.h strobj.c strobj.h duprintf.c duprintf.h \
dlist.c dlist.h dliststr.c dliststr.h array.c array.h \
strmem.c strmem.h arraystruct.c arraystruct.h \
fileutil.c fileutil.h arraystr.c arraystr.h \
datestrconv.c datestrconv.h
AM_CPPFLAGS = -I../src @GAW_CFLAGS@
OSTLYCLEANFILES = *.log core FILE *~ prototype.bak
CLEANFILES = *.log core FILE *~ prototype.bak
DISTCLEANFILES = *.log core FILE *~ prototype.bak
MAINTAINERCLEANFILES = *.log core FILE *~ prototype.bak prototype.h \
Makefile.in configure
EXTRA_DIST = stest.c stest.mak

736
lib/Makefile.in Normal file
View File

@ -0,0 +1,736 @@
# Makefile.in generated by automake 1.16.5 from Makefile.am.
# @configure_input@
# Copyright (C) 1994-2021 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
false; \
elif test -n '$(MAKE_HOST)'; then \
true; \
elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
true; \
else \
false; \
fi; \
}
am__make_running_with_option = \
case $${target_option-} in \
?) ;; \
*) echo "am__make_running_with_option: internal error: invalid" \
"target option '$${target_option-}' specified" >&2; \
exit 1;; \
esac; \
has_opt=no; \
sane_makeflags=$$MAKEFLAGS; \
if $(am__is_gnu_make); then \
sane_makeflags=$$MFLAGS; \
else \
case $$MAKEFLAGS in \
*\\[\ \ ]*) \
bs=\\; \
sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
| sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \
esac; \
fi; \
skip_next=no; \
strip_trailopt () \
{ \
flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
}; \
for flg in $$sane_makeflags; do \
test $$skip_next = yes && { skip_next=no; continue; }; \
case $$flg in \
*=*|--*) continue;; \
-*I) strip_trailopt 'I'; skip_next=yes;; \
-*I?*) strip_trailopt 'I';; \
-*O) strip_trailopt 'O'; skip_next=yes;; \
-*O?*) strip_trailopt 'O';; \
-*l) strip_trailopt 'l'; skip_next=yes;; \
-*l?*) strip_trailopt 'l';; \
-[dEDm]) skip_next=yes;; \
-[JT]) skip_next=yes;; \
esac; \
case $$flg in \
*$$target_option*) has_opt=yes; break;; \
esac; \
done; \
test $$has_opt = yes
am__make_dryrun = (target_option=n; $(am__make_running_with_option))
am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
pkgdatadir = $(datadir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = lib
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/gettext.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/intlmacosx.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/nls.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LIBRARIES = $(noinst_LIBRARIES)
AR = ar
ARFLAGS = cru
AM_V_AR = $(am__v_AR_@AM_V@)
am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
am__v_AR_0 = @echo " AR " $@;
am__v_AR_1 =
libload_a_AR = $(AR) $(ARFLAGS)
libload_a_LIBADD =
am_libload_a_OBJECTS = spicestream.$(OBJEXT) ss_cazm.$(OBJEXT) \
ss_nsout.$(OBJEXT) ss_spice3.$(OBJEXT) ss_hspice.$(OBJEXT) \
ss_spice2.$(OBJEXT) ss_wav.$(OBJEXT) fileformat.$(OBJEXT) \
util.$(OBJEXT) fdbuf.$(OBJEXT) dbuf.$(OBJEXT) msglog.$(OBJEXT) \
appmem.$(OBJEXT) appclass.$(OBJEXT) dataset.$(OBJEXT) \
wavevar.$(OBJEXT) wavetable.$(OBJEXT) sndstream.$(OBJEXT) \
sndparams.$(OBJEXT) sockcon.$(OBJEXT) fdsel.$(OBJEXT) \
stutil.$(OBJEXT) fsutil.$(OBJEXT) strcatdup.$(OBJEXT) \
incvar.$(OBJEXT) strobj.$(OBJEXT) duprintf.$(OBJEXT) \
dlist.$(OBJEXT) dliststr.$(OBJEXT) array.$(OBJEXT) \
strmem.$(OBJEXT) arraystruct.$(OBJEXT) fileutil.$(OBJEXT) \
arraystr.$(OBJEXT) datestrconv.$(OBJEXT)
libload_a_OBJECTS = $(am_libload_a_OBJECTS)
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
am__v_P_1 = :
AM_V_GEN = $(am__v_GEN_@AM_V@)
am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
am__v_GEN_0 = @echo " GEN " $@;
am__v_GEN_1 =
AM_V_at = $(am__v_at_@AM_V@)
am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
am__v_at_0 = @
am__v_at_1 =
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__maybe_remake_depfiles = depfiles
am__depfiles_remade = ./$(DEPDIR)/appclass.Po ./$(DEPDIR)/appmem.Po \
./$(DEPDIR)/array.Po ./$(DEPDIR)/arraystr.Po \
./$(DEPDIR)/arraystruct.Po ./$(DEPDIR)/dataset.Po \
./$(DEPDIR)/datestrconv.Po ./$(DEPDIR)/dbuf.Po \
./$(DEPDIR)/dlist.Po ./$(DEPDIR)/dliststr.Po \
./$(DEPDIR)/duprintf.Po ./$(DEPDIR)/fdbuf.Po \
./$(DEPDIR)/fdsel.Po ./$(DEPDIR)/fileformat.Po \
./$(DEPDIR)/fileutil.Po ./$(DEPDIR)/fsutil.Po \
./$(DEPDIR)/incvar.Po ./$(DEPDIR)/msglog.Po \
./$(DEPDIR)/sndparams.Po ./$(DEPDIR)/sndstream.Po \
./$(DEPDIR)/sockcon.Po ./$(DEPDIR)/spicestream.Po \
./$(DEPDIR)/ss_cazm.Po ./$(DEPDIR)/ss_hspice.Po \
./$(DEPDIR)/ss_nsout.Po ./$(DEPDIR)/ss_spice2.Po \
./$(DEPDIR)/ss_spice3.Po ./$(DEPDIR)/ss_wav.Po \
./$(DEPDIR)/strcatdup.Po ./$(DEPDIR)/strmem.Po \
./$(DEPDIR)/strobj.Po ./$(DEPDIR)/stutil.Po \
./$(DEPDIR)/util.Po ./$(DEPDIR)/wavetable.Po \
./$(DEPDIR)/wavevar.Po
am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
AM_V_CC = $(am__v_CC_@AM_V@)
am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
am__v_CC_0 = @echo " CC " $@;
am__v_CC_1 =
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_CCLD = $(am__v_CCLD_@AM_V@)
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = $(libload_a_SOURCES)
DIST_SOURCES = $(libload_a_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
# *not* preserved.
am__uniquify_input = $(AWK) '\
BEGIN { nonempty = 0; } \
{ items[$$0] = 1; nonempty = 1; } \
END { if (nonempty) { for (i in items) print i; }; } \
'
# Make sure the list of sources is unique. This is necessary because,
# e.g., the same source file might be shared among _SOURCES variables
# for different programs/libraries.
am__define_uniq_tagged_files = \
list='$(am__tagged_files)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | $(am__uniquify_input)`
am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALSA_CFLAGS = @ALSA_CFLAGS@
ALSA_LIBS = @ALSA_LIBS@
AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CSCOPE = @CSCOPE@
CTAGS = @CTAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
ETAGS = @ETAGS@
EXEEXT = @EXEEXT@
GAWRCDIR = @GAWRCDIR@
GAW_CFLAGS = @GAW_CFLAGS@
GAW_LDFLAGS = @GAW_LDFLAGS@
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
GLIB228_CFLAGS = @GLIB228_CFLAGS@
GLIB228_LIBS = @GLIB228_LIBS@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
GTK300_CFLAGS = @GTK300_CFLAGS@
GTK300_LIBS = @GTK300_LIBS@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INTLLIBS = @INTLLIBS@
INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
LDFLAGS = @LDFLAGS@
LIBICONV = @LIBICONV@
LIBINTL = @LIBINTL@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
LTLIBICONV = @LTLIBICONV@
LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@
PKG_CONFIG_PATH = @PKG_CONFIG_PATH@
POSUB = @POSUB@
POW_LIB = @POW_LIB@
RANLIB = @RANLIB@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
builddir = @builddir@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
@CCISGCC_TRUE@AM_CFLAGS = -Wall
noinst_LIBRARIES = libload.a
libload_a_SOURCES = spicestream.c ss_cazm.c ss_nsout.c ss_spice3.c \
ss_hspice.c ss_spice2.c ss_wav.c fileformat.c util.c \
fdbuf.c dbuf.c msglog.c appmem.c appclass.c dataset.c \
wavevar.c wavetable.c sndstream.c sndparams.c sockcon.c fdsel.c \
fdbuf.h dbuf.h msglog.h appmem.h appclass.h dataset.h \
wavevar.h wavetable.h sndstream.h sndparams.h ss_wav.h \
spicestream.h fileformat.h util.h sockcon.h fdsel.h bswap.h \
stutil.c stutil.h fsutil.c fsutil.h strcatdup.c strcatdup.h \
incvar.c incvar.h strobj.c strobj.h duprintf.c duprintf.h \
dlist.c dlist.h dliststr.c dliststr.h array.c array.h \
strmem.c strmem.h arraystruct.c arraystruct.h \
fileutil.c fileutil.h arraystr.c arraystr.h \
datestrconv.c datestrconv.h
AM_CPPFLAGS = -I../src @GAW_CFLAGS@
OSTLYCLEANFILES = *.log core FILE *~ prototype.bak
CLEANFILES = *.log core FILE *~ prototype.bak
DISTCLEANFILES = *.log core FILE *~ prototype.bak
MAINTAINERCLEANFILES = *.log core FILE *~ prototype.bak prototype.h \
Makefile.in configure
EXTRA_DIST = stest.c stest.mak
all: all-am
.SUFFIXES:
.SUFFIXES: .c .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
&& { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \
$(am__cd) $(top_srcdir) && \
$(AUTOMAKE) --gnu lib/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
libload.a: $(libload_a_OBJECTS) $(libload_a_DEPENDENCIES) $(EXTRA_libload_a_DEPENDENCIES)
$(AM_V_at)-rm -f libload.a
$(AM_V_AR)$(libload_a_AR) libload.a $(libload_a_OBJECTS) $(libload_a_LIBADD)
$(AM_V_at)$(RANLIB) libload.a
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/appclass.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/appmem.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/array.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arraystr.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/arraystruct.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dataset.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/datestrconv.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dbuf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dlist.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dliststr.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/duprintf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdbuf.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fdsel.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileformat.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fsutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/incvar.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msglog.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sndparams.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sndstream.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sockcon.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spicestream.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_cazm.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_hspice.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_nsout.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_spice2.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_spice3.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ss_wav.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strcatdup.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strmem.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strobj.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stutil.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/util.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wavetable.Po@am__quote@ # am--include-marker
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wavevar.Po@am__quote@ # am--include-marker
$(am__depfiles_remade):
@$(MKDIR_P) $(@D)
@echo '# dummy' >$@-t && $(am__mv) $@-t $@
am--depfiles: $(am__depfiles_remade)
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
tags: tags-am
TAGS: tags
tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
set x; \
here=`pwd`; \
$(am__define_uniq_tagged_files); \
shift; \
if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
if test $$# -gt 0; then \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
"$$@" $$unique; \
else \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$unique; \
fi; \
fi
ctags: ctags-am
CTAGS: ctags
ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
$(am__define_uniq_tagged_files); \
test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& $(am__cd) $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) "$$here"
cscopelist: cscopelist-am
cscopelist-am: $(am__tagged_files)
list='$(am__tagged_files)'; \
case "$(srcdir)" in \
[\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
*) sdir=$(subdir)/$(srcdir) ;; \
esac; \
for i in $$list; do \
if test -f "$$i"; then \
echo "$(subdir)/$$i"; \
else \
echo "$$sdir/$$i"; \
fi; \
done >> $(top_builddir)/cscope.files
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) distdir-am
distdir-am: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
list='$(DISTFILES)'; \
dist_files=`for file in $$list; do echo $$file; done | \
sed -e "s|^$$srcdirstrip/||;t" \
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
case $$dist_files in \
*/*) $(MKDIR_P) `echo "$$dist_files" | \
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
sort -u` ;; \
esac; \
for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
if test -d $$d/$$file; then \
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
if test -d "$(distdir)/$$file"; then \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
test -f "$(distdir)/$$file" \
|| cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(LIBRARIES)
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
if test -z '$(STRIP)'; then \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
install; \
else \
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
fi
mostlyclean-generic:
clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
clean: clean-am
clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am
distclean: distclean-am
-rm -f ./$(DEPDIR)/appclass.Po
-rm -f ./$(DEPDIR)/appmem.Po
-rm -f ./$(DEPDIR)/array.Po
-rm -f ./$(DEPDIR)/arraystr.Po
-rm -f ./$(DEPDIR)/arraystruct.Po
-rm -f ./$(DEPDIR)/dataset.Po
-rm -f ./$(DEPDIR)/datestrconv.Po
-rm -f ./$(DEPDIR)/dbuf.Po
-rm -f ./$(DEPDIR)/dlist.Po
-rm -f ./$(DEPDIR)/dliststr.Po
-rm -f ./$(DEPDIR)/duprintf.Po
-rm -f ./$(DEPDIR)/fdbuf.Po
-rm -f ./$(DEPDIR)/fdsel.Po
-rm -f ./$(DEPDIR)/fileformat.Po
-rm -f ./$(DEPDIR)/fileutil.Po
-rm -f ./$(DEPDIR)/fsutil.Po
-rm -f ./$(DEPDIR)/incvar.Po
-rm -f ./$(DEPDIR)/msglog.Po
-rm -f ./$(DEPDIR)/sndparams.Po
-rm -f ./$(DEPDIR)/sndstream.Po
-rm -f ./$(DEPDIR)/sockcon.Po
-rm -f ./$(DEPDIR)/spicestream.Po
-rm -f ./$(DEPDIR)/ss_cazm.Po
-rm -f ./$(DEPDIR)/ss_hspice.Po
-rm -f ./$(DEPDIR)/ss_nsout.Po
-rm -f ./$(DEPDIR)/ss_spice2.Po
-rm -f ./$(DEPDIR)/ss_spice3.Po
-rm -f ./$(DEPDIR)/ss_wav.Po
-rm -f ./$(DEPDIR)/strcatdup.Po
-rm -f ./$(DEPDIR)/strmem.Po
-rm -f ./$(DEPDIR)/strobj.Po
-rm -f ./$(DEPDIR)/stutil.Po
-rm -f ./$(DEPDIR)/util.Po
-rm -f ./$(DEPDIR)/wavetable.Po
-rm -f ./$(DEPDIR)/wavevar.Po
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
html-am:
info: info-am
info-am:
install-data-am:
install-dvi: install-dvi-am
install-dvi-am:
install-exec-am:
install-html: install-html-am
install-html-am:
install-info: install-info-am
install-info-am:
install-man:
install-pdf: install-pdf-am
install-pdf-am:
install-ps: install-ps-am
install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f ./$(DEPDIR)/appclass.Po
-rm -f ./$(DEPDIR)/appmem.Po
-rm -f ./$(DEPDIR)/array.Po
-rm -f ./$(DEPDIR)/arraystr.Po
-rm -f ./$(DEPDIR)/arraystruct.Po
-rm -f ./$(DEPDIR)/dataset.Po
-rm -f ./$(DEPDIR)/datestrconv.Po
-rm -f ./$(DEPDIR)/dbuf.Po
-rm -f ./$(DEPDIR)/dlist.Po
-rm -f ./$(DEPDIR)/dliststr.Po
-rm -f ./$(DEPDIR)/duprintf.Po
-rm -f ./$(DEPDIR)/fdbuf.Po
-rm -f ./$(DEPDIR)/fdsel.Po
-rm -f ./$(DEPDIR)/fileformat.Po
-rm -f ./$(DEPDIR)/fileutil.Po
-rm -f ./$(DEPDIR)/fsutil.Po
-rm -f ./$(DEPDIR)/incvar.Po
-rm -f ./$(DEPDIR)/msglog.Po
-rm -f ./$(DEPDIR)/sndparams.Po
-rm -f ./$(DEPDIR)/sndstream.Po
-rm -f ./$(DEPDIR)/sockcon.Po
-rm -f ./$(DEPDIR)/spicestream.Po
-rm -f ./$(DEPDIR)/ss_cazm.Po
-rm -f ./$(DEPDIR)/ss_hspice.Po
-rm -f ./$(DEPDIR)/ss_nsout.Po
-rm -f ./$(DEPDIR)/ss_spice2.Po
-rm -f ./$(DEPDIR)/ss_spice3.Po
-rm -f ./$(DEPDIR)/ss_wav.Po
-rm -f ./$(DEPDIR)/strcatdup.Po
-rm -f ./$(DEPDIR)/strmem.Po
-rm -f ./$(DEPDIR)/strobj.Po
-rm -f ./$(DEPDIR)/stutil.Po
-rm -f ./$(DEPDIR)/util.Po
-rm -f ./$(DEPDIR)/wavetable.Po
-rm -f ./$(DEPDIR)/wavevar.Po
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am:
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
clean-generic clean-noinstLIBRARIES cscopelist-am ctags \
ctags-am distclean distclean-compile distclean-generic \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am install-dvi \
install-dvi-am install-exec install-exec-am install-html \
install-html-am install-info install-info-am install-man \
install-pdf install-pdf-am install-ps install-ps-am \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
tags tags-am uninstall uninstall-am
.PRECIOUS: Makefile
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

141
lib/appclass.c Normal file
View File

@ -0,0 +1,141 @@
/*
* appclass.c - Methods to provide user interfaces to the AppClass structure.
*
* include LICENSE
*
* Originaly written Theodore A. Roth for the simulavr project,
* it is now used as a common file that can be used in every project.
* stolen from simulavr.
*/
#include <appclass.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
/** \brief This function should never be used.
*
* The only potential use for it as a template for derived classes.
* Do Not Use This Function!
*/
AppClass *app_class_new(void)
{
AppClass *klass = app_new(AppClass, 1);
app_class_construct(klass);
return klass;
}
/** \brief Initializes the AppClass data structure.
*
* A derived class should call this function from their own
* <klass>_construct() function. All classes should
* have their constructor function call their parent's constructor
* function.
*/
void app_class_construct(AppClass * klass)
{
if (klass == NULL) {
msg_fatal(_("passed null ptr"));
}
klass->ref_count = 1;
app_class_overload_destroy(klass, app_class_destroy);
}
/** \brief Releases resources allocated by class's <klass>_new() function.
*
* This function should never be called except as the last statement
* of a directly derived class's destroy method.
* All classes should have their destroy method call their parent's
* destroy method.
*/
void app_class_destroy(void *klass)
{
if (klass == NULL) {
return;
}
app_free(klass);
}
/** \brief Overload the default destroy method.
*
* Derived classes will call this to replace app_class_destroy() with their own
* destroy method.
*/
void app_class_overload_destroy(AppClass * klass,
AppClassFP_Destroy destroy)
{
if (klass == NULL) {
msg_fatal(_("passed null ptr"));
}
klass->destroy = destroy;
}
/** \brief Increments the reference count for the klass object.
*
* The programmer must call this whenever a reference to an object
* is stored in more than one place.
*/
void app_class_ref(AppClass * klass)
{
if (klass == NULL) {
msg_fatal(_("passed null ptr"));
}
klass->ref_count++;
}
/** \brief Decrements the reference count for the klass object.
*
* When the reference count reaches zero, the class's destroy method
* is called on the object.
*/
void app_class_unref(AppClass * klass)
{
if (klass == NULL) {
msg_fatal(_("passed null ptr"));
}
klass->ref_count--;
if (klass->ref_count == 0) {
klass->destroy(klass);
}
}
#ifdef USE_CLASS_TYPE
/** \brief Use the field type of the klass object.
*
* Set the the value of the class type that may be useful for some
* applications.
*/
void app_class_set_type(AppClass * klass, int type)
{
if (klass == NULL) {
msg_fatal(_("passed null ptr"));
}
klass->type = type;
}
/** \brief Use the field type of the klass object.
*
* Get the the value of the class type that may be useful for some
* applications.
*/
int app_class_get_type(AppClass * klass)
{
if (klass == NULL) {
msg_fatal(_("passed null ptr"));
}
return klass->type;
}
#endif /* USE_CLASS_TYPE */

36
lib/appclass.h Normal file
View File

@ -0,0 +1,36 @@
#ifndef APP_CLASS_H
#define APP_CLASS_H
/*
* appclass.h - OOP Implementaion built up from AppClass structure.
*
* include LICENSE
*/
#include <appmem.h>
typedef struct _AppClass AppClass;
typedef void (*AppClassFP_Destroy) (void *klass);
/* a generic function callback */
typedef int (*App_Run_FP)( AppClass *app, void *user_data );
struct _AppClass {
int type; /* application may use this field to store a type */
int ref_count; /* Object reference count */
AppClassFP_Destroy destroy; /* pointer to destroy function, can be overridden */
};
extern AppClass *app_class_new(void);
extern void app_class_construct(AppClass * klass);
extern void app_class_destroy(void *klass);
extern void app_class_overload_destroy(AppClass * klass,
AppClassFP_Destroy destroy);
extern void app_class_ref(AppClass * klass);
extern void app_class_unref(AppClass * klass);
#ifdef USE_CLASS_TYPE
void app_class_set_type(AppClass * klass, int type);
int app_class_get_type(AppClass * klass);
#endif /* USE_CLASS_TYPE */
#endif /* APP_CLASS_H */

153
lib/appmem.c Normal file
View File

@ -0,0 +1,153 @@
/**
* \file appmem.c
* \brief Methods to provide memory interfaces to the AppClass structure.
*
* interface to memory allocation
*
* stolen from simulavr
*
* include LICENSE
*/
#include <appmem.h>
/**
* \brief Memory Management Functions.
*
* This module provides facilities for managing memory.
*
*
* There is no need to check the returned values from any of these
* functions. Any memory allocation failure is considered fatal and the
* program is terminated.
*
* We want to wrap all functions that allocate memory. This way we can
* add secret code to track memory usage and debug memory leaks if we
* want. Right now, I don't want to ;).
*/
/* These macros are only here for documentation purposes. */
#ifdef MACRO_DOCUMENTATION
/** \brief Macro for allocating memory.
* \param type The C type of the memory to allocate.
* \param count Allocate enough memory hold count types.
*
* This macro is just a wrapper for app_malloc() and should be used to avoid
* the repetitive task of casting the returned pointer.
*/
#define app_new(type, count) \
((type *) app_malloc ((unsigned) sizeof (type) * (count)))
/** \brief Macro for allocating memory and initializing it to zero.
* \param type The C type of the memory to allocate.
* \param count Allocate enough memory hold count types.
*
* This macro is just a wrapper for app_malloc0() and should be used to avoid
* the repetitive task of casting the returned pointer.
*/
#define app_new0(type, count) \
((type *) app_malloc0 ((unsigned) sizeof (type) * (count)))
/** \brief Macro for allocating memory.
* \param type The C type of the memory to allocate.
* \param mem Pointer to existing memory.
* \param count Allocate enough memory hold count types.
*
* This macro is just a wrapper for app_malloc() and should be used to avoid
* the repetitive task of casting the returned pointer.
*/
#define app_renew(type, mem, count) \
((type *) app_realloc (mem, (unsigned) sizeof (type) * (count)))
#endif /* MACRO_DOCUMENTATION */
/** \brief Allocate memory and initialize to zero.
*
* Use the app_new() macro instead of this function.
*
* There is no need to check the returned value, since this function will
* terminate the program if the memory allocation fails.
*
* No memory is allocated if passed a size of zero.
*/
void *app_malloc(size_t size)
{
if (size) {
void *ptr;
ptr = malloc(size);
if (ptr) {
return ptr;
}
msg_fatal(_("malloc failed"));
}
return NULL;
}
/** \brief Allocate memory and initialize to zero.
*
* Use the app_new0() macro instead of this function.
*
* There is no need to check the returned value, since this function will
* terminate the program if the memory allocation fails.
*
* No memory is allocated if passed a size of zero.
*/
void *app_malloc0(size_t size)
{
if (size) {
void *ptr;
ptr = calloc(1, size);
if (ptr) {
return ptr;
}
msg_fatal(_("malloc0 failed"));
}
return NULL;
}
/** \brief Wrapper for realloc().
*
* Resizes and possibly allocates more memory for an existing memory block.
*
* Use the app_renew() macro instead of this function.
*
* There is no need to check the returned value, since this function will
* terminate the program if the memory allocation fails.
*
* No memory is allocated if passed a size of zero.
*/
void *app_realloc(void *ptr, size_t size)
{
if (size) {
ptr = realloc(ptr, size);
if (ptr) {
return ptr;
}
msg_fatal(_("realloc failed"));
}
return NULL;
}
/** \brief Free malloc'd memory.
*
* It is safe to pass a null pointer to this function.
*/
void app_free(void *ptr)
{
if (ptr) {
free(ptr);
}
}

92
lib/appmem.h Normal file
View File

@ -0,0 +1,92 @@
#ifndef APP_MEM_H
#define APP_MEM_H
/*
* appmem.h - interface to memory allocation
*
* include LICENSE
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
/*
* msglog.h is needed for msg_fatal, ...
* CENTOS : msglog include stdlib.h that need to be included before glib.h
*/
#include <msglog.h>
#ifndef ARRAY_SIZE
#define ARRAY_SIZE(a) ( sizeof(a) / sizeof((a)[0]) )
#endif
#ifdef HAVE_GLIB
#include <glib.h>
#undef malloc
#undef calloc
#undef realloc
#undef free
#define malloc g_malloc
#define calloc(x,y) g_malloc0(x*y)
#define realloc g_realloc
#define free g_free
/* this is for CENTOS */
// #define __need_malloc_and_calloc
#endif
#ifndef HAVE_GLIB
# define GUINT_TO_POINTER(u) ((void *) (unsigned long) (u))
# define GINT_TO_POINTER(i) ((void *) (long) (i))
# define GPOINTER_TO_UINT(p) ((unsigned int) (unsigned long) (p))
# define GPOINTER_TO_INT(p) ((int) (unsigned long) (p))
#endif
/* disable some trace_mem functions remaining in the code */
#ifndef TRACE_MEM
#define tmem_init( file )
#define tmem_destroy(tm)
#define tmem_alloced(p,size)
#define tmem_freed(p)
#define app_memcheck()
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
/*
* Macros for allocating new memory. Automatically performs type cast.
*/
/** \brief Macro for allocating memory.
* \param type The C type of the memory to allocate.
* \param count Allocate enough memory hold count types.
*
* This macro is just a wrapper for app_malloc() and should be used to avoid
* the repetitive task of casting the returned pointer.
*/
#define app_new(type, count) \
((type *) app_malloc ((unsigned) sizeof (type) * (count)))
#define app_new0(type, count) \
((type *) app_malloc0 ((unsigned) sizeof (type) * (count)))
#define app_renew(type, mem, count) \
((type *) app_realloc (mem, (unsigned) sizeof (type) * (count)))
/*
* Malloc and free wrappers. Perform sanity checks for you.
*/
extern void *app_malloc(size_t size);
extern void *app_malloc0(size_t size);
extern void *app_realloc(void *ptr, size_t size);
extern void app_free(void *ptr);
#endif /* APP_MEM_H */

334
lib/array.c Normal file
View File

@ -0,0 +1,334 @@
/*
* array.c - array interface functions
*
* include LICENSE
*/
#include <stdio.h>
#include <string.h>
#include <strmem.h>
#include <array.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
/*
*** \brief Allocates memory for a new Array object.
*/
Array *array_new( int elSize, int count )
{
Array *ary;
ary = app_new0(Array, 1);
array_construct( ary, elSize, count );
app_class_overload_destroy( (AppClass *) ary, array_destroy );
return ary;
}
/** \brief Constructor for the Array object. */
void array_construct( Array *ary, int elSize, int count )
{
app_class_construct( (AppClass *) ary );
if (count == 0 ){
count = DEF_ELEM_COUNT;
} else if ( count < 0 ){
count = app_power_of_2(count);
}
if (elSize == 0 ){
elSize = sizeof(char *); /* sizeof pointer */
}
ary->nAlloc = count;
ary->elSize = elSize;
/*
* always keep a null element at the end of array
* actual allocated = nAlloc + 1, but usable is nAlloc
*/
ary->ptr = app_malloc0 ( elSize * (count + 1) );
/*
* default function to destroy an element
* Must be overloaded for non AppClass element : char *, dlist *
*/
ary->destroyFunc = (ElmDestroyFP_func) app_class_unref ;
}
/** \brief Destructor for the Array object. */
void array_destroy(void *ary)
{
Array *this = (Array *) ary;
if (ary == NULL) {
return;
}
array_tbl_delete_all(this);
app_free(this->ptr);
app_class_destroy( ary );
}
void array_tbl_delete_all(Array *ary)
{
int i;
void **pptr;
ElmDestroyFP_func func = ary->destroyFunc;
if ( func ) {
for ( i = 0 ; i < ary->nelem ; i++ ){
/* pointer of type void used in arithmetic wpointer arith */
pptr = (void *)((char *) ary->ptr + (i * ary->elSize));
if ( *pptr ){
func ( *pptr );
}
}
}
ary->nelem = 0;
}
void array_set_elem_destroyFunc(Array *ary, ElmDestroyFP_func func)
{
ary->destroyFunc = (ElmDestroyFP_func) func;
}
void *array_table_get(Array *ary)
{
return ary->ptr ;
}
void *array_tbl_get(Array *ary, int index)
{
if ( index >= ary->nelem) {
msg_error ( "Index %d >= Nb elem %d", index, ary->nelem);
return NULL;
}
void **pptr = (void **) ary->ptr;
return pptr[index] ;
}
/*
* suppress the element in array and destroy it
*/
void array_tbl_delete(Array *ary, int index)
{
if ( index >= ary->nelem) {
msg_error ( "Index %d > Nb elem %d", index, ary->nelem);
return;
}
void **pptr = (void **) ary->ptr;
if ( pptr[index] ){
ary->destroyFunc ( pptr[index] );
}
memmove ( &pptr[index], &pptr[index + 1], ary->elSize * (ary->nelem - index));
ary->nelem--;
}
/*
* get the element and remove it from array without destroying the element
*/
void *array_tbl_remove(Array *ary, int index)
{
if ( index >= ary->nelem) {
msg_error ( "Index %d > Nb elem %d", index, ary->nelem);
return NULL;
}
void **pptr = (void **) ary->ptr;
void *ptr = pptr[index] ;
memmove ( &pptr[index], &pptr[index + 1], ary->elSize * (ary->nelem - index));
ary->nelem--;
return ptr ;
}
/*
* allocate 1 more to always get a free element set to null
*/
void array_tbl_expand(Array *ary, int n)
{
if ( n > ary->nAlloc ) {
ary->nAlloc <<= 1;
ary->ptr = app_realloc(ary->ptr, ary->elSize * (ary->nAlloc + 1));
memset((char *) ary->ptr + (ary->nelem * ary->elSize), 0,
ary->elSize * ( ary->nAlloc + 1 - ary->nelem) );
}
}
void array_tbl_add(Array *ary, void *elPtr)
{
array_tbl_expand(ary, ary->nelem + 1);
void **pptr = (void **) ary->ptr;
pptr[ary->nelem++] = elPtr;
}
/*
* insert before index
*/
void array_tbl_insert(Array *ary, void *elPtr, int index)
{
if ( index > ary->nelem) {
msg_error ( "Index %d > Nb elem %d", index, ary->nelem);
return;
}
array_tbl_expand(ary, ary->nelem + 1);
void **pptr = (void **) ary->ptr;
memmove ( &pptr[index + 1], &pptr[index], ary->elSize * (ary->nelem - index));
pptr[index] = elPtr;
ary->nelem++;
}
/*
* replace element at index
* return the old element
*/
void *array_tbl_replace(Array *ary, void *elPtr, int index)
{
if ( index >= ary->nelem) {
/* just add it */
array_tbl_add(ary, elPtr);
// msg_error ( "Index %d > Nb elem %d", index, ary->nelem);
return NULL;
}
void **pptr = (void **) ary->ptr;
void *ptr = pptr[index] ;
pptr[index] = elPtr;
return ptr ;
}
/*
* replace the element with the new one
* and kill the old one
*/
void array_tbl_replace_kill(Array *ary, void *elPtr, int index)
{
void *ptr = array_tbl_replace(ary, elPtr, index) ;
if ( ptr ) {
ary->destroyFunc ( ptr ) ;
}
}
int array_tbl_index(Array *ary, void *elPtr)
{
int i;
void **pptr = (void **) ary->ptr;
for ( i = 0 ; i < ary->nelem ; i++ ){
if ( pptr[i] == elPtr ) {
return i;
}
}
return -1;
}
void array_set_nelem (Array *ary, int nelem)
{
ary->nelem = nelem;
return ;
}
int array_get_nelem (Array *ary)
{
return ary->nelem ;
}
/** \brief Lookup an item in the array.
*
* Walk the array pointed to by ary and return a pointer to the data if
* found. If not found, return NULL.
*
* \param ary The array to be iterated.
* \param data The data to be passed to the func when it is applied.
* \param cmp A function to be used for comparing the items.
*
* \return A pointer to the data found, or NULL if not found.
*
* Warning: element list Must be sorted before creating the table
*/
AppClass *array_lookup_sorted( Array *ary, AppClass *data, ArrayFP_Cmp cmp, int *index )
{
int i;
int ret;
int lo ;
int hi ;
AppClass *entry ;
if (cmp == NULL) {
msg_fatal( "compare function not specified" );
}
lo = 0;
hi = ary->nelem;
while (lo != hi) {
i = (hi + lo) / 2 ;
entry = (AppClass *) array_tbl_get( ary, i );
ret = (*cmp)(entry, data);
if ( ret > 0 ) { /* entry->symbol > symbol */
hi = i;
} else if ( ret < 0 ) { /* entry->symbol < symbol */
lo = i + 1;
} else { /* entry->symbol == symbol */
/* symbol found */
if ( index ){
*index = i;
}
return entry;
}
}
if ( index ){
*index = lo;
}
return NULL;
}
/*
* lookup an unsorted list
*/
AppClass *array_lookup( Array *ary, AppClass *data, ArrayFP_Cmp cmp, int *index )
{
int i;
AppClass *entry ;
if (cmp == NULL) {
msg_fatal( "compare function not specified" );
}
for ( i = 0; i < ary->nelem ; i++) {
entry = (AppClass *) array_tbl_get( ary, i );
if ( entry && (*cmp)(entry, data) == 0 ) { /* entry->symbol == symbol */
/* symbol found */
if ( index ){
*index = i;
}
return entry;
}
}
return NULL;
}
void array_sort(Array *ary, ArraySortFP_Cmp cmp_func )
{
qsort( ary->ptr, ary->nelem, ary->elSize, cmp_func);
}
void array_iterator(Array *ary, ArrayFP_Iter iter_func, void *user_data)
{
int i;
AppClass *entry ;
for ( i = 0; i < ary->nelem ; i++) {
entry = (AppClass *) array_tbl_get( ary, i );
if ( entry ){
(*iter_func)(entry, user_data);
}
}
}

63
lib/array.h Normal file
View File

@ -0,0 +1,63 @@
#ifndef ARRAY_H
#define ARRAY_H
/*
* array.h - array of pointers
*
* include LICENSE
*/
/*
array_new( MimeObj, 8)
*
*/
#include <appclass.h>
typedef void (*ElmDestroyFP_func) ( void *ptr);
typedef int (*ArrayFP_Cmp) ( AppClass *d1, AppClass *d2 );
typedef int (*ArraySortFP_Cmp) ( const void *, const void * );
typedef int (*ArrayFP_Iter) ( AppClass *data, void *user_data );
#define DEF_ELEM_COUNT 8
typedef struct _Array Array;
struct _Array {
AppClass parent;
void *ptr; /* the array */
int nAlloc; /* usable number element allocated */
int nelem; /* number element actually added */
int elSize; /* size of one table entry */
ElmDestroyFP_func destroyFunc;
};
/*
* prototypes
*/
Array *array_new( int elSize, int count );
void array_construct( Array *ary, int elSize, int count );
void array_destroy(void *ary);
void array_set_elem_destroyFunc(Array *ary, ElmDestroyFP_func func);
void array_tbl_expand(Array *ary, int n);
void *array_table_get(Array *ary);
void array_tbl_delete_all(Array *ary);
void array_tbl_delete(Array *ary, int index);
void *array_tbl_get(Array *ary, int index);
void *array_tbl_remove(Array *ary, int index);
void array_tbl_add(Array *ary, void *elPtr);
void array_tbl_insert(Array *ary, void *elPtr, int index);
void *array_tbl_replace(Array *ary, void *elPtr, int index);
void array_tbl_replace_kill(Array *ary, void *elPtr, int index);
void array_set_nelem (Array *ary, int nelem);
int array_get_nelem (Array *ary);
int array_tbl_index(Array *ary, void *elPtr);
AppClass *array_lookup( Array *ary, AppClass *data, ArrayFP_Cmp cmp, int *index );
AppClass *array_lookup_sorted( Array *ary, AppClass *data, ArrayFP_Cmp cmp, int *index );
void array_sort(Array *ary, ArraySortFP_Cmp cmp_func );
void array_iterator(Array *ary, ArrayFP_Iter iter_func, void *user_data );
#endif /* ARRAY_H */

107
lib/arraystr.c Normal file
View File

@ -0,0 +1,107 @@
/*
* arraystr.c - array of string pointers
*
* include LICENSE
*/
#include <stdio.h>
#include <string.h>
#include <strmem.h>
#include <arraystr.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
/*
*** \brief Allocates memory for a new Array object.
*/
ArrayStr *array_strPtr_new( int count )
{
ArrayStr *ary;
ary = app_new0(ArrayStr, 1);
array_strPtr_construct( ary, count );
app_class_overload_destroy( (AppClass *) ary, array_strPtr_destroy );
return ary;
}
/** \brief Constructor for the ArrayStr object. */
void array_strPtr_construct( ArrayStr *ary, int count )
{
array_construct( (Array *) ary, 0, count );
#ifdef TRACE_MEM
((Array *) ary)->destroyFunc = str_free_func;
#else
((Array *) ary)->destroyFunc = app_free;
#endif
}
/** \brief Destructor for the ArrayStr object. */
void array_strPtr_destroy(void *ary)
{
// ArrayStr *this = (ArrayStr *) ary;
if (ary == NULL) {
return;
}
array_destroy( ary );
}
/*
* strdup a string and add it
*/
void array_strPtr_nadd(ArrayStr *ary, char *str, int len )
{
char *newstr = app_strndup(str, len);
array_tbl_add((Array *) ary, newstr);
}
/*
* strdup a string and add it
*/
void array_strPtr_add(ArrayStr *ary, char *str )
{
char *newstr = app_strdup(str);
array_tbl_add((Array *) ary, newstr);
}
/*
* strdup a string and insert it
*/
void array_strPtr_insert(ArrayStr *ary, char *str, int index )
{
char *newstr = app_strdup(str);
array_tbl_insert((Array *) ary, newstr, index);
}
/*
* strdup a string and replace it at index
*/
char *array_strPtr_replace(ArrayStr *ary, char *str, int index )
{
char *newstr = app_strdup(str);
return (char *) array_tbl_replace((Array *) ary, newstr, index);
}
void array_strPtr_replace_kill(ArrayStr *ary, char *str, int index )
{
char *oldstr = array_strPtr_replace( ary, str, index );
if ( oldstr ) {
((Array *) ary)->destroyFunc ( oldstr ) ;
}
}
int array_strPtr_cmp( AppClass *d1, AppClass *d2 )
{
return (app_strcmp( ((char *) d1), ((char *) d2) ) );
}

41
lib/arraystr.h Normal file
View File

@ -0,0 +1,41 @@
#ifndef ARRAYSTR_H
#define ARRAYSTR_H
/*
* arraystr.h - array of string pointers
*
* include LICENSE
*/
#include <array.h>
#define array_strPtr_get(ary, index) \
(char *) array_tbl_get((Array *) ary, index)
#define array_strPtr_nelem(ary) \
array_get_nelem((Array *) ary)
#define array_strPtr_lookup(ary, str, pindex) \
(char *) array_lookup((Array *) ary, (AppClass *) str, array_strPtr_cmp, pindex)
typedef struct _ArrayStr ArrayStr;
struct _ArrayStr {
Array parent; /* the Array Stucture */
};
/*
* prototypes
*/
ArrayStr *array_strPtr_new( int count );
void array_strPtr_construct( ArrayStr *ary, int count );
void array_strPtr_destroy(void *ary);
void array_strPtr_nadd(ArrayStr *ary, char *str, int len );
void array_strPtr_add(ArrayStr *ary, char *str );
void array_strPtr_insert(ArrayStr *ary, char *str, int index );
char *array_strPtr_replace(ArrayStr *ary, char *str, int index );
void array_strPtr_replace_kill(ArrayStr *ary, char *str, int index );
int array_strPtr_cmp( AppClass *d1, AppClass *d2 );
#endif /* ARRAYSTR_H */

90
lib/arraystruct.c Normal file
View File

@ -0,0 +1,90 @@
/*
*
* arraystruct.h - array of structures
* same thing as array but with structure instead of pointer
*
* include LICENSE
*/
#include <stdio.h>
#include <string.h>
#include <arraystruct.h>
/*
*** \brief Allocates memory for a new ArrayStruct object.
*/
ArrayStruct *array_struct_new( int elSize, int count, ElmDestroyFP_func func )
{
ArrayStruct *aryst;
aryst = app_new0(ArrayStruct, 1);
array_struct_construct( aryst, elSize, count, func );
app_class_overload_destroy( (AppClass *) aryst, array_struct_destroy );
return aryst;
}
/** \brief Constructor for the ArrayStruct object. */
void array_struct_construct( ArrayStruct *aryst, int elSize, int count,
ElmDestroyFP_func func )
{
array_construct( (Array *) aryst, elSize, count );
array_set_elem_destroyFunc( (Array *) aryst, NULL);
aryst->func = func;
}
/** \brief Destructor for the ArrayStruct object. */
void array_struct_destroy(void *aryst)
{
ArrayStruct *this = (ArrayStruct *) aryst;
if (aryst == NULL) {
return;
}
array_struct_delete_all(this);
array_destroy(aryst);
}
void array_struct_delete_all(ArrayStruct *aryst)
{
int i;
void **pptr = (void **) ((Array *) aryst)->ptr;
ElmDestroyFP_func func = aryst->func;
if ( func ) {
for ( i = 0 ; i < ((Array *) aryst)->nelem ; i++ ){
pptr = ((Array *) aryst)->ptr + (i * ((Array *) aryst)->elSize);
func ( pptr );
}
}
((Array *) aryst)->nelem = 0;
}
/*
* get a pointer to the structure at index
*/
void *array_struct_get( ArrayStruct *aryst, int index)
{
Array *ary = (Array *) aryst;
if ( index >= ary->nelem) {
msg_error ( "Index %d > Nb elem %d", index, ary->nelem);
return NULL;
}
return (void *) ary->ptr + (ary->elSize * index);
}
/*
* add a new element in array
* return a pointer to the next elem
* to let the user fill it
*/
void *array_struct_next(ArrayStruct *aryst )
{
Array *ary = (Array *) aryst;
array_tbl_expand( ary, ary->nelem + 1);
return (void *) ary->ptr + ( ary->elSize * ary->nelem++);
}

36
lib/arraystruct.h Normal file
View File

@ -0,0 +1,36 @@
#ifndef ARRAYSTRUCT_H
#define ARRAYSTRUCT_H
/*
* arraystruct.h - array of structures
* same thing as array but with structure instead of pointer
*
* include LICENSE
*/
#include <array.h>
typedef struct _ArrayStruct ArrayStruct;
struct _ArrayStruct {
Array parent;
ElmDestroyFP_func func; /* function to destroy the element */
};
#define array_struct_table_get(ary) array_table_get((Array *) ary)
#define array_struct_get_nelem(ary) array_get_nelem((Array *) ary)
/*
* prototypes
*/
ArrayStruct *array_struct_new( int elSize, int count, ElmDestroyFP_func func );
void array_struct_construct( ArrayStruct *aryst, int elSize,
int count, ElmDestroyFP_func func );
void array_struct_destroy(void *aryst);
void array_struct_delete_all(ArrayStruct *aryst);
void *array_struct_get(ArrayStruct *aryst, int index);
void *array_struct_next(ArrayStruct *aryst );
#endif /* ARRAYSTRUCT_H */

102
lib/bswap.h Normal file
View File

@ -0,0 +1,102 @@
#ifndef B_SWAP_H
#define B_SWAP_H
/*
* bswap.h - interface to byte swap macros
*
* include LICENSE
*/
/*
* File to be suppressed when all dists will define le16toh, ...
*/
#if defined(HAVE_ENDIAN_H) && defined(HAVE_BYTESWAP_H)
#include <endian.h>
#include <byteswap.h>
/* Definitions for Microsoft WAVE format */
#if __BYTE_ORDER == __LITTLE_ENDIAN
# define cpu_to_be16(x) __bswap_16 (x)
# define cpu_to_le16(x) (x)
# define be16_to_cpu(x) __bswap_16 (x)
# define le16_to_cpu(x) (x)
# define cpu_to_be32(x) __bswap_32 (x)
# define cpu_to_le32(x) (x)
# define be32_to_cpu(x) __bswap_32 (x)
# define le32_to_cpu(x) (x)
# define cpu_to_be64(x) __bswap_64 (x)
# define cpu_to_le64(x) (x)
# define be64_to_cpu(x) __bswap_64 (x)
# define le64_to_cpu(x) (x)
# elif __BYTE_ORDER == __BIG_ENDIAN
# define cpu_to_be16(x) (x)
# define cpu_to_le16(x) __bswap_16 (x)
# define be16_to_cpu(x) (x)
# define le16_to_cpu(x) __bswap_16 (x)
# define cpu_to_be32(x) (x)
# define cpu_to_le32(x) __bswap_32 (x)
# define be32_to_cpu(x) (x)
# define le32_to_cpu(x) __bswap_32 (x)
# define cpu_to_be64(x) (x)
# define cpu_to_le64(x) __bswap_64 (x)
# define be64_to_cpu(x) (x)
# define le64_to_cpu(x) __bswap_64 (x)
#else /* __BYTE_ORDER == __LITTLE_ENDIAN */
#error "Wrong endian"
#endif /* __BYTE_ORDER == __LITTLE_ENDIAN */
#elif defined(HAVE_LIBKERN_OSBYTEORDER_H)
#include <libkern/OSByteOrder.h>
/* Definitions for Microsoft WAVE format */
# define cpu_to_be16(x) OSSwapHostToBigInt16 (x)
# define cpu_to_le16(x) OSSwapHostToLittleInt16 (x)
# define be16_to_cpu(x) OSSwapBigToHostInt16 (x)
# define le16_to_cpu(x) OSSwapLittleToHostInt16 (x)
# define cpu_to_be32(x) OSSwapHostToBigInt32 (x)
# define cpu_to_le32(x) OSSwapHostToLittleInt32 (x)
# define be32_to_cpu(x) OSSwapBigToHostInt32 (x)
# define le32_to_cpu(x) OSSwapLittleToHostInt32 (x)
# define cpu_to_be64(x) OSSwapHostToBigInt64 (x)
# define cpu_to_le64(x) OSSwapHostToLittleInt64 (x)
# define be64_to_cpu(x) OSSwapBigToHostInt64 (x)
# define le64_to_cpu(x) OSSwapLittleToHostInt64 (x)
#elif defined(HAVE_SYS_ENDIAN_H)
#include <sys/endian.h>
/* Definitions for Microsoft WAVE format */
# define cpu_to_be16(x) htobe16(x)
# define cpu_to_le16(x) htole16 (x)
# define be16_to_cpu(x) be16toh (x)
# define le16_to_cpu(x) le16toh (x)
# define cpu_to_be32(x) htobe32 (x)
# define cpu_to_le32(x) htole32 (x)
# define be32_to_cpu(x) be32toh (x)
# define le32_to_cpu(x) le32toh (x)
# define cpu_to_be64(x) htobe64 (x)
# define cpu_to_le64(x) htole64 (x)
# define be64_to_cpu(x) be64toh (x)
# define le64_to_cpu(x) le64toh (x)
#else /* defined(HAVE_ENDIAN_H) && defined(HAVE_BYTESWAP_H) */
#error "Failed to define byte swapping macros"
/* TODO: Implement fallback functions to detect endianness and implement byte swapping.*/
#endif /* defined(HAVE_ENDIAN_H) && defined(HAVE_BYTESWAP_H) */
#endif /* B_SWAP_H */

347
lib/dataset.c Normal file
View File

@ -0,0 +1,347 @@
/*
* dataset.c - dataset interface functions
*
* include LICENSE
*/
#include <stdio.h>
#include <string.h>
#include <strmem.h>
#include <dataset.h>
#include <wavevar.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
/*
*** \brief Allocates memory for a new WDataSet object.
*/
WDataSet *dataset_new( int ncols, AppClass *wt, int tblno )
{
WDataSet *wds;
wds = app_new0(WDataSet, 1);
dataset_construct( wds, ncols, wt, tblno );
app_class_overload_destroy( (AppClass *) wds, dataset_destroy );
return wds;
}
/** \brief Constructor for the WDataSet object. */
void dataset_construct( WDataSet *wds, int ncols, AppClass *wt, int tblno )
{
app_class_construct( (AppClass *) wds );
wds->ncols = ncols;
wds->datas = g_ptr_array_new ();
wds->vars = g_ptr_array_new ();
wds->colMin = g_array_new (FALSE, FALSE, sizeof (double) );
wds->colMax = g_array_new (FALSE, FALSE, sizeof (double) );
wds->swvals = g_array_new (FALSE, FALSE, sizeof (double) );
wds->wvtable = wt;
wds->tblno = tblno;
wds->varmap = g_array_new (FALSE, FALSE, sizeof (int) );
wds->mapshift = 1;
}
/** \brief Destructor for the WDataSet object. */
void dataset_destroy(void *wds)
{
WDataSet *this = (WDataSet *) wds;
if (wds == NULL) {
return;
}
app_free(this->setname);
dataset_remove_all_vars( this);
g_ptr_array_free (this->vars, FALSE);
g_ptr_array_free (this->datas, TRUE);
g_array_free (this->colMin, TRUE);
g_array_free (this->colMax, TRUE);
g_array_free (this->swvals, TRUE);
g_array_free (this->varmap, TRUE);
app_class_destroy( wds );
}
/*
* given a col num, return the corresponding var index
*/
int dataset_map_col_to_var( WDataSet *wds, int icol )
{
int map = g_array_index (wds->varmap, int, icol );
return (map >> wds->mapshift);
}
void dataset_varmap_remap(WDataSet *wds, int ncols)
{
int shift = wds->mapshift;
int oldmap;
int i;
while ( (1 << shift) < ncols ) {
shift <<= 1;
}
for ( i = 0 ; i < wds->ncols ; i++ ) {
oldmap = g_array_index (wds->varmap, int, i );
int col = oldmap & ((1 << wds->mapshift) - 1);
int varno = oldmap >> wds->mapshift;
g_array_index (wds->varmap, int, i ) = ( varno << shift) + col;
}
wds->mapshift = shift;
}
void dataset_col_add(WDataSet *wds, int ncols)
{
int i ;
int map;
double val;
if ( (1 << wds->mapshift) < ncols ) {
dataset_varmap_remap(wds, ncols);
}
for ( i = 0 ; i < ncols ; i++ ) {
map = (wds->numVars << wds->mapshift) + i ;
g_array_append_val(wds->varmap, map ); /* at curcol */
GArray *ary = g_array_new (FALSE, FALSE, sizeof (double) );
g_ptr_array_add (wds->datas, (gpointer) ary);
val = G_MAXDOUBLE;
g_array_append_val(wds->colMin, val);
val = -G_MAXDOUBLE;
g_array_append_val(wds->colMax, val );
wds->ncols++;
}
}
void dataset_var_add(WDataSet *wds, char *varName, int type, int ncols)
{
WaveVar *var = wavevar_new(wds, varName, type, wds->ncols, ncols);
dataset_col_add(wds, ncols);
wavevar_set_wavetable(var, wds->wvtable, wds->tblno );
g_ptr_array_add (wds->vars, (gpointer) var);
wds->numVars++;
}
void dataset_col_remove(WDataSet *wds, int colno, int ncols)
{
for ( ; ncols > 0 ; ncols-- ) {
GArray *ary = g_ptr_array_index( wds->datas, colno + ncols - 1 );
g_array_remove_index ( wds->varmap, colno + ncols - 1 );
g_ptr_array_remove (wds->datas, (gpointer) ary);
g_array_free (ary, TRUE);
wds->ncols--;
}
}
/*
* if ivar != numVars - 1 we should renumber
* all the vars beeteen ivar and numVars - 1 !!!
*/
void dataset_var_remove(WDataSet *wds, int ivar)
{
WaveVar *var = g_ptr_array_index( wds->vars, ivar );
dataset_col_remove(wds, var->colno, var->ncols);
g_ptr_array_remove (wds->vars, (gpointer) var);
wavevar_destroy( var);
wds->numVars--;
}
void dataset_remove_all_vars(WDataSet *wds)
{
int nvars = wds->numVars ;
for ( ; nvars ; nvars-- ) {
dataset_var_remove(wds, nvars - 1);
}
}
void dataset_min_max_init( WDataSet *wds, int col )
{
g_array_index (wds->colMin, double, col ) = G_MAXDOUBLE;
g_array_index (wds->colMax, double, col ) = -G_MAXDOUBLE;
}
void dataset_val_set_min_max( WDataSet *wds, int col, double val )
{
double *prev = &g_array_index (wds->colMin, double, col );
if ( val < *prev ) {
g_array_index (wds->colMin, double, col ) = val;
}
prev = &g_array_index (wds->colMax, double, col );
if ( *prev < val ) {
g_array_index (wds->colMax, double, col ) = val;
}
}
double dataset_val_get_min(WDataSet *wds, int col )
{
double *min = &g_array_index (wds->colMin, double, col );
return *min;
}
double dataset_val_get_max(WDataSet *wds, int col )
{
double *max = &g_array_index (wds->colMax, double, col );
return *max;
}
/*
* add or replace val in an array
*/
void dataset_col_val_add (WDataSet *wds, int row, int col, double val)
{
GArray *ary = g_ptr_array_index( wds->datas, col );
if ( row < 0 || row >= ary->len ){
g_array_append_val(ary, val );
} else {
g_array_index (ary, double, row ) = val;
}
dataset_val_set_min_max( wds, col, val );
}
/*
* add a cell to array and set a value in a cell
* supposing ncols is set previously and
* val comes sequentially
*/
void dataset_val_add (WDataSet *wds, double val)
{
dataset_col_val_add( wds, -1, wds->curcol, val );
if ( ++wds->curcol >= wds->ncols ) {
wds->currow++; /* currow is not used */
wds->curcol = 0;
wds->nrows++;
}
}
/*
* add a sweep val to the dataset
*/
void dataset_swval_add (WDataSet *wds, double val)
{
g_array_append_val(wds->swvals, val );
wds->nswvals++;
}
double dataset_val_get(WDataSet *wds, int row, int col )
{
GArray *ary = g_ptr_array_index( wds->datas, col );
double *val = &g_array_index (ary, double, row );
return *val;
}
double dataset_swval_get(WDataSet *wds, int index )
{
double *val = &g_array_index (wds->swvals, double, index );
return *val;
}
void dataset_dup_var_name(WDataSet *wds, char *varName, int idx)
{
WaveVar *var = g_ptr_array_index( wds->vars, idx );
wavevar_dup_name(var, varName);
}
void dataset_dup_setname(WDataSet *wds, char *setname)
{
wds->setname = app_strdup(setname);
}
char *dataset_get_setname(WDataSet *wds)
{
return wds->setname;
}
int dataset_get_nrows(WDataSet *wds )
{
return wds->nrows;
}
int dataset_get_ncols(WDataSet *wds )
{
return wds->ncols;
}
AppClass *dataset_get_wavevar(WDataSet *wds, int ivar )
{
WaveVar *var = g_ptr_array_index( wds->vars, ivar );
return (AppClass *) var;
}
AppClass *dataset_get_var_for_name(WDataSet *wds, char *varName )
{
int i;
for ( i = 0 ; i < wds->numVars ; i++ ) {
WaveVar *var = (WaveVar *) dataset_get_wavevar( wds, i );
if ( app_strcmp( varName, var->varName ) == 0 ){
return (AppClass *) var;
}
}
return (AppClass *) NULL;
}
int dataset_get_wavevar_type(WDataSet *wds, int ivar )
{
WaveVar *var = (WaveVar *) dataset_get_wavevar( wds, ivar );
return wavevar_get_type( var );
}
void dataset_set_wavevar_type(WDataSet *wds, int ivar, int type )
{
WaveVar *var = (WaveVar *) dataset_get_wavevar( wds, ivar );
wavevar_set_type( var, type );
}
/*
* Use a binary search to return the index of the point
* whose value is the largest not greater than ival.
* if ival is equal or greater than the max value of the
* independent variable, return the index of the last point.
*
* Only works on independent-variables, which we require to
* be nondecreasing and have only a single column.
*
* Further, if there are duplicate values, returns the highest index
* that has the same value.
*/
int dataset_find_row_index( WDataSet *wds, double ival)
{
double cval;
int a = 0;
int b;
b = wds->nrows - 1;
double colMax = dataset_val_get_max( wds, 0 );
if (ival >= colMax) {
return b;
}
while ( a + 1 < b) {
cval = dataset_val_get( wds, (a + b) / 2, 0 ); /* row, col */
// printf(" a=%d b=%d ival=%g cval=%g\n", a, b, ival, cval);
if (ival < cval){
b = ( a + b) / 2;
} else {
a = (a + b) / 2;
}
}
return a;
}

75
lib/dataset.h Normal file
View File

@ -0,0 +1,75 @@
#ifndef DATASET_H
#define DATASET_H
/*
* dataset.h - dataset interface
*
* include LICENSE
*/
/*
* Array Storage
* array for each column hold in a GPtrArray
*
*/
#include <appclass.h>
typedef struct _WDataSet WDataSet;
struct _WDataSet {
AppClass parent;
AppClass *wvtable; /* back pointer to the holding table */
GPtrArray *datas; /* array of pointer to array containing double data */
int ncols; /* number of column in array */
int nrows; /* number of rows in array */
GPtrArray *vars; /* array of WaveVar ; 0 = iv */
int numVars; /* number of var in array vars */
GArray *colMin; /* array of min value - the col min value */
GArray *colMax; /* array of max value - the col max value */
GArray *swvals; /* array of value at which the sweep was taken */
int nswvals; /* number of vals in swvals */
int currow;
int curcol;
int curvar;
int tblno; /* number of the table */
char *setname; /* name of the sweep, if any, else NULL */
GArray *varmap; /* array of int map col num to var num */
int mapshift; /* number of bit to shift for the index */
};
/*
* prototypes
*/
WDataSet *dataset_new( int ncols, AppClass *wt, int tblno );
void dataset_construct( WDataSet *wds, int ncols, AppClass *wt, int tblno );
void dataset_destroy(void *wds);
void dataset_col_add(WDataSet *wds, int ncols);
void dataset_col_remove(WDataSet *wds, int colno, int ncols);
void dataset_var_add(WDataSet *wds, char *varName, int type, int ncols);
void dataset_var_remove(WDataSet *wds, int ivar);
void dataset_remove_all_vars(WDataSet *wds);
void dataset_col_val_add (WDataSet *wds, int row, int col, double val);
void dataset_val_add (WDataSet *wds, double val);
double dataset_val_get(WDataSet *wds, int row, int col );
int dataset_get_nrows(WDataSet *wds );
int dataset_get_ncols(WDataSet *wds );
int dataset_find_row_index( WDataSet *wds, double ival);
void dataset_dup_var_name(WDataSet *wds, char *varName, int ivar);
int dataset_get_wavevar_type(WDataSet *wds, int ivar );
void dataset_set_wavevar_type(WDataSet *wds, int ivar, int type );
void dataset_dup_setname(WDataSet *wds, char *setname);
char *dataset_get_setname(WDataSet *wds);
void dataset_dup_label(WDataSet *wds, char *label);
void dataset_swval_add (WDataSet *wds, double val);
double dataset_swval_get(WDataSet *wds, int index );
void dataset_min_max_init( WDataSet *wds, int col );
void dataset_val_set_min_max( WDataSet *wds, int col, double val );
double dataset_val_get_min(WDataSet *wds, int col );
double dataset_val_get_max(WDataSet *wds, int col );
AppClass *dataset_get_wavevar(WDataSet *wds, int ivar );
AppClass *dataset_get_var_for_name(WDataSet *wds, char *varName );
#endif /* DATASET_H */

105
lib/datestrconv.c Normal file
View File

@ -0,0 +1,105 @@
/*
* datestrconv.c - convert string to time and time to string
*
* include LICENSE
*
*/
#define _XOPEN_SOURCE
#include <datestrconv.h>
#include <duprintf.h>
char *deffmt = "%d-%m-%Y %H:%M:%S";
/*
* convert a data time string to time_t
* ex: "27 1 2016 0:02:24" -> 1401197380
* *str_time must freed by caller if used.
*/
void
convert_datestr(char *datestr, char *fmt, time_t *int_time, char **str_time )
{
struct tm tm;
time_t mytime;
char *format = deffmt;
if ( fmt ){
format = fmt;
}
memset(&tm, 0, sizeof(struct tm));
if ( strptime( datestr, format, &tm) == NULL ){
fprintf(stderr, "Bad format: \"%s\" expected \"%s\"\n", datestr, format );
}
tm.tm_isdst = -1;
mytime = mktime(&tm);
if ( int_time ){
*int_time = mytime;
}
if ( str_time ){
*str_time = app_strdup_printf("%lu", (unsigned long) mytime );
}
#ifdef HQDEBUG
if ( prog_debug ){
char buf[255];
strftime(buf, sizeof(buf), format, &tm);
fprintf(stderr, "\"%s\" converted to \"%s\"\n", datestr, buf );
struct tm *ptm;
ptm = localtime(&mytime);
strftime(buf, sizeof(buf), format, ptm);
fprintf(stderr, "Result for %lu is \"%s\"\n", (unsigned long) mytime, buf );
}
#endif
}
/*
* time_t to date
* -cd 1418979685
* -cd 0x547BA1A2
*/
void convert_time_t_to_date( time_t mytime, char *fmt, char *buf, int buflen )
{
struct tm *ptm;
char *format = deffmt;
if ( fmt ){
format = fmt;
}
ptm = localtime(&mytime);
strftime(buf, buflen, format, ptm);
#ifdef HQDEBUG
if ( prog_debug ){
fprintf(stderr, "%lu -> 0x%lX -> \"%s\"\n",
(unsigned long) mytime, (unsigned long) mytime, buf );
}
#endif
}
void convert_string_to_date( char *arg, char *fmt, char *buf, int buflen )
{
time_t mytime;
mytime = strtoul(arg, NULL, 0);
convert_time_t_to_date( mytime, fmt, buf, buflen );
}
/*
* convert a time_t representing a diff between 2 dates
* to a string
*/
void convert_difftime_str( time_t mytime, char *fmt, char *buf, int buflen )
{
int days = mytime / (24 * 3600);
mytime = mytime % (24 * 3600);
int hours = mytime / 3600;
mytime = mytime % 3600;
int mins = mytime / 60;
int secs = mytime % 60;
snprintf( buf, buflen, fmt, days, hours, mins, secs );
}

25
lib/datestrconv.h Normal file
View File

@ -0,0 +1,25 @@
#ifndef DATESTRCONV_H
#define DATESTRCONV_H
/*
* datestrconv.h - convert string to time and time to string
*
* include LICENSE
*/
#include <stdio.h>
#include <string.h>
#include <time.h>
#ifndef _XOPEN_SOURCE
#define _XOPEN_SOURCE /* for strptime */
#endif
/*
* prototypes
*/
void convert_datestr(char *datestr, char *fmt, time_t *int_time, char **str_time );
void convert_time_t_to_date( time_t mytime, char *fmt, char *buf, int buflen );
void convert_string_to_date( char *arg, char *fmt, char *buf, int buflen );
void convert_difftime_str( time_t mytime, char *fmt, char *buf, int buflen );
#endif /* DATESTRCONV_H */

407
lib/dbuf.c Normal file
View File

@ -0,0 +1,407 @@
/*
* dbuf.c - dynamic buffer functions
*
* include LICENSE
*/
#define _GNU_SOURCE /* for vasprintf */
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
#include <dbuf.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
/**
* \brief Allocates memory for a new DBuf object.
* size : the initial size of the buffer
* buffer : if not null, an external buffer that can be worked as a dbuf
* except reallocation. (Use for read only, for example)
*/
DBuf *
dbuf_new( int size, char *ext_buf )
{
DBuf *dbuf;
dbuf = app_new0(DBuf, 1 );
dbuf_construct( dbuf, size, ext_buf );
app_class_overload_destroy( (AppClass *) dbuf, dbuf_destroy );
return dbuf;
}
/** \brief Constructor for the DBuf object. */
void dbuf_construct( DBuf *dbuf, int size, char *ext_buf )
{
app_class_construct( (AppClass *) dbuf );
if (size == 0 ){
size = BUFSIZ;
}
if ( ext_buf ) {
dbuf->ext_buf = dbuf->s = ext_buf;
dbuf->len = size;
} else {
size = app_power_of_2(size);
dbuf->s = app_new(char, size );
*(dbuf->s) = 0;
}
dbuf->size = size ;
}
/** \brief Destructor for the DBuf object. */
void dbuf_destroy( void *dbuf)
{
DBuf *this = (DBuf *) dbuf;
if ( dbuf == NULL ) {
return;
}
if ( ! this->ext_buf ){
app_free(this->s);
}
app_class_destroy( dbuf );
}
void dbuf_set_fill_cb( DBuf *dbuf, Dbuf_Fill_FP fill_func, AppClass *caller)
{
dbuf->fill_func = fill_func;
dbuf->caller = caller;
}
void dbuf_renew( DBuf *dbuf, int newsize)
{
if ( dbuf->ext_buf ){
msg_fatal("external buffer to allowed to reallocate");
}
dbuf->size = app_power_of_2(newsize + 1);
dbuf->nRenew++;
dbuf->s = app_renew( char, dbuf->s , dbuf->size);
}
void dbuf_set_flags( DBuf *dest, int flags)
{
dest->flags = flags ;
}
int dbuf_is_empty( DBuf *dest)
{
if ( dest->pos < dest->len ){
return 0 ;
}
return 1 ;
}
int dbuf_get_available( DBuf *dest)
{
return dest->len - dest->pos;
}
void dbuf_set_pos( DBuf *dest, int pos)
{
dest->pos = pos ;
}
int dbuf_get_size( DBuf *dest)
{
return dest->size ;
}
int dbuf_get_pos( DBuf *dest)
{
return dest->pos ;
}
void dbuf_set_len( DBuf *dest, int len)
{
dest->len = len ;
if ( dest->len > dest->size - 1) {
dbuf_renew( dest, dest->len );
}
char *p = dest->s + dest->len ;
*p = 0;
}
int dbuf_get_len( DBuf *dest)
{
return dest->len ;
}
void dbuf_inc_len( DBuf *dest)
{
dbuf_set_len( dest, dest->len + 1);
}
void dbuf_clear( DBuf *dest)
{
dest->pos = 0 ;
dest->len = 0 ;
dest->lineno = 0;
*(dest->s) = 0;
}
/*
* concatenate n bytes from (src->s + pos) to dest
*/
void dbuf_ncat( DBuf *dest, DBuf *src, int slen)
{
int len = dest->len ;
dest->len += slen ;
if ( dest->len >= dest->size - 1) {
dbuf_renew( dest, dest->len );
}
memmove(dest->s + len, src->s + src->pos, slen );
*(dest->s + dest->len) = 0;
src->pos += slen;
}
/*
* Warning : src start at src->s + src->pos and not at start of buffer
*/
void dbuf_cat( DBuf *dest, DBuf *src)
{
int slen = src->len - src->pos;
dbuf_ncat( dest, src, slen);
}
void dbuf_ncopy( DBuf *dest, DBuf *src, int slen)
{
dest->pos = 0 ;
dest->len = 0 ;
dbuf_ncat( dest, src, slen);
}
void dbuf_copy( DBuf *dest, DBuf *src)
{
dbuf_ncopy( dest, src, src->len);
}
void dbuf_strncpy( DBuf *dest, char *src, int slen)
{
dest->pos = 0 ;
dest->len = slen ;
if ( dest->len >= dest->size - 1) {
dbuf_renew( dest, dest->len );
}
memmove(dest->s, src, slen);
*(dest->s + dest->len) = 0;
}
void dbuf_strcpy( DBuf *dest, char *src)
{
dbuf_strncpy( dest, src, app_strlen(src));
}
void dbuf_strncat( DBuf *dest, char *src, int slen)
{
int dlen = dest->len ;
dest->len += slen ;
if ( dest->len >= dest->size - 1) {
dbuf_renew( dest, dest->len );
}
memmove(dest->s + dlen, src, slen );
*(dest->s + dest->len) = 0;
}
void dbuf_strcat( DBuf *dest, char *src)
{
dbuf_strncat( dest, src, app_strlen(src));
}
/*
* concatanate all arguments of a NULL terminated list
*/
void dbuf_concat( DBuf *dest, ...)
{
va_list args;
const char *p;
if ((p = ( const char *) dest) == NULL) {
return ;
}
va_start (args, dest);
p = va_arg (args, const char *);
while (p != NULL) {
dbuf_strcat( dest, (char *) p);
p = va_arg (args, const char *);
}
va_end (args);
}
/*
* return a pointer on the next char in buffer
* instead of the char itself
*/
char *dbuf_next_char(DBuf *sbuf)
{
if (sbuf->pos >= sbuf->len) {
if ( sbuf->fill_func == NULL) {
return NULL;
} else {
int lineno = sbuf->lineno;
dbuf_clear(sbuf);
if ( sbuf->fill_func(sbuf->caller, (AppClass *) sbuf) == NULL ) {
return NULL;
}
sbuf->lineno = lineno;
}
}
char *p = sbuf->s + sbuf->pos++;
if (*p == '\n') {
sbuf->lineno++;
}
return p;
}
/*
* return a single char from buffer
* or -1 if no more chars.
*/
int dbuf_get_char(DBuf *sbuf)
{
char *p = dbuf_next_char(sbuf);
if ( ! p ){
return -1;
}
return (unsigned char) *p;
}
/*
* return a duped binary string from dbuf of len chars
* string may countain 0.
* Caller must free the returned ptr.
*/
char *dbuf_get_dupchars(DBuf *sbuf, int len)
{
if (sbuf->pos + len >= sbuf->len) {
return NULL;
}
char *ptr = app_new0( char, len + 1) ;
memmove(ptr, sbuf->s + sbuf->pos, len);
sbuf->pos += len;
return ptr;
}
char *dbuf_get_line(DBuf *dest, DBuf *src)
{
char *p;
int c = 0; /* compiler warning */
int lastc = 0;
dbuf_clear(dest);
while ( (p = dbuf_next_char(src)) ) {
c = *p;
if ( c == '\n' && lastc == '\\' && (dest->flags & DB_JOIN_LINES) ) {
dbuf_unput_char( dest ); /* remove lastc */
c = ' ';
}
if (c == '\n' || c == 0 ) {
break;
}
if ( c == '\r' && (dest->flags & DB_STRIP_CR) ) {
continue;
}
dbuf_put_char( dest, c);
lastc = c;
}
if ( p == NULL && dest->len == 0) {
return NULL;
}
if ( dest->flags & DB_KEEP_LF) {
dbuf_put_char( dest, c);
}
return dest->s;
}
/*
* undo a get_char
*/
int dbuf_unget_char(DBuf *sbuf)
{
if (--sbuf->pos < 0) {
return -1;
}
char c = sbuf->s[sbuf->pos];
return (unsigned char) c;
}
/*
* undo a put_char
*/
int dbuf_unput_char(DBuf *sbuf)
{
if (--sbuf->len < 0) {
return -1;
}
char c = sbuf->s[sbuf->len];
sbuf->s[sbuf->len] = 0;
return (unsigned char) c;
}
void dbuf_put_char( DBuf *dest, char c)
{
if ( dest->len >= dest->size - 2) {
dbuf_renew( dest, dest->len + 1 );
}
char *p = dest->s + dest->len++ ;
*p++ = c;
*p = 0;
}
/*
* dbuf_printf is like sprintf but to dbuf ; concatatenate the result
*/
void dbuf_vprintf( DBuf *dest, const char *format, va_list args )
{
char *buffer = NULL;
/* vasprintf returns malloc-allocated memory */
int len = vasprintf(&buffer, format, args);
if ( len < 0 ){
msg_error("vasprintf returned -1.");
return;
}
dbuf_strncat(dest, buffer, len);
app_free (buffer);
}
void dbuf_printf( DBuf *dest, const char *format, ...)
{
va_list args;
va_start (args, format);
dbuf_vprintf( dest, format, args );
va_end (args);
}
/*
* move remaining data at beginning of buffer
*/
void dbuf_move_beg( DBuf *dbuf)
{
if ( dbuf->pos && dbuf->pos != dbuf->len ){
dbuf->len -= dbuf->pos;
memmove(dbuf->s, dbuf->s + dbuf->pos, dbuf->len );
dbuf->pos = 0;
}
}
int dbuf_get_lineno( DBuf *dbuf)
{
return dbuf->lineno;
}

82
lib/dbuf.h Normal file
View File

@ -0,0 +1,82 @@
#ifndef DBUF_H
#define DBUF_H
/*
* dbuf.c - dynamic buffer interface
*
* include LICENSE
*/
#include <strmem.h>
#include <appclass.h>
#include <stdarg.h>
/*
* a function called to refill the buffer
*/
typedef char * (*Dbuf_Fill_FP)( AppClass *caller, AppClass *app );
/* merged with fdbuf flags */
enum _DbufFlagsInfo {
DB_STRIP_CR = ( 1 << 0 ), /* if set remove crlf - \r\n -> \n */
DB_JOIN_LINES = ( 1 << 1 ), /* if set join lines - \\n -> ' ' */
DB_KEEP_LF = ( 1 << 2 ), /* if set join lines - \\n -> ' ' */
};
#define dbuf_check_size(x, y) if ( (y) >= (x)->size - 1) dbuf_renew( (x), (y) );
typedef struct _DBuf DBuf;
struct _DBuf {
AppClass parent;
char *s; /* pointer to string */
char *ext_buf; /* pointer to external buffer */
Dbuf_Fill_FP fill_func; /* application call function to fill the buffer */
AppClass *caller; /* parameter to fill_func */
int pos; /* use pos to get - position on string */
int len; /* use len to fill - string len */
int size; /* allocated size */
int nRenew; /* count re-new */
int flags; /* flags for get_line */
int lineno; /* keep track of line number for get_line */
};
DBuf *dbuf_new( int size, char *ext_buf );
void dbuf_construct( DBuf *dbuf, int size, char *ext_buf);
void dbuf_destroy(void *dbuf);
void dbuf_set_fill_cb( DBuf *dbuf, Dbuf_Fill_FP fill_func, AppClass *caller);
void dbuf_renew( DBuf *dbuf, int newsize);
void dbuf_clear( DBuf *dest);
void dbuf_set_flags( DBuf *dest, int flags);
void dbuf_set_pos( DBuf *dest, int pos);
int dbuf_is_empty( DBuf *dest);
int dbuf_get_lineno( DBuf *dest);
int dbuf_get_available( DBuf *dest);
int dbuf_get_pos( DBuf *dest);
int dbuf_get_size( DBuf *dest);
void dbuf_set_len( DBuf *dest, int len);
int dbuf_get_len( DBuf *dest);
void dbuf_inc_len( DBuf *dest);
void dbuf_copy( DBuf *dest, DBuf *src);
void dbuf_ncopy( DBuf *dest, DBuf *src, int slen);
void dbuf_ncat( DBuf *dest, DBuf *src, int slen);
void dbuf_cat( DBuf *dest, DBuf *src);
void dbuf_strncpy( DBuf *dest, char *src, int slen);
void dbuf_strcpy( DBuf *dest, char *src);
void dbuf_strncat( DBuf *dest, char *src, int slen);
void dbuf_strcat( DBuf *dest, char *src);
void dbuf_concat( DBuf *dest, ...);
char *dbuf_next_char(DBuf *sbuf);
int dbuf_get_char(DBuf *sbuf);
char *dbuf_get_dupchars(DBuf *sbuf, int len);
int dbuf_unget_char(DBuf *sbuf);
int dbuf_unput_char(DBuf *sbuf);
void dbuf_put_char( DBuf *dest, char c);
char *dbuf_get_line(DBuf *dest, DBuf *src);
void dbuf_vprintf( DBuf *dest, const char *format, va_list args );
void dbuf_printf( DBuf *dest, const char *format, ...);
void dbuf_move_beg( DBuf *dbuf);
#endif /* DBUF_H */

414
lib/dlist.c Normal file
View File

@ -0,0 +1,414 @@
/*
* dlist.c - A generic doubly linked list.
*
* include LICENSE
*/
#include <stdio.h>
#include <sys/time.h>
#include <appclass.h>
#include <dlist.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
/***************************************************************************
*
* DList(AppClass) Methods : A doubly linked list.
*
***************************************************************************/
static DList *dlist_new_node(AppClass * data);
static void dlist_construct_node(DList * node, AppClass * data);
static DList *dlist_new_node(AppClass * data)
{
DList *node;
node = app_new0(DList, 1);
dlist_construct_node(node, data);
app_class_overload_destroy((AppClass *) node, dlist_destroy_node);
return node;
}
static void dlist_construct_node(DList * node, AppClass * data)
{
app_class_construct((AppClass *) node);
node->prev = node;
node->next = node;
node->data = data;
}
void dlist_destroy_node(void *node)
{
DList *_node = (DList *) node;
if (_node == NULL) {
return;
}
if (_node->data) {
app_class_unref(_node->data);
}
app_class_destroy(node);
}
/** \brief Add a new node to the end of the list.
*
* If cmp argument is not NULL, use cmp() to see if node already exists and
* don't add node if it exists.
*
* This function can unref data if not added, if asked by user (*res != 0).
* The res variable is set to 1 if data is not added.
*
* head is modified only when the list is empty.
* So it is safe to add node to an existing list.
*/
DList *dlist_add(DList * head, AppClass * data, DListFP_Cmp cmp, int *res)
{
if (head == NULL) {
/* The list is empty, make new node the head. */
head = dlist_new_node(NULL); /* special head node */
}
DList *node = head->next;
/* Walk the list to find the end */
if (cmp) {
while (node != head) {
if ((*cmp) (node->data, data) == 0) {
/* node already exists and we were asked to keep nodes unique */
if (res) {
if (*res) {
app_class_unref(data); /* elem destroyed */
}
*res = 1; /* elem not added to the list */
}
return head;
}
node = node->next;
}
}
/* reached the end - add at the tail */
dlist_add_at(head->prev, data);
if (res) {
*res = 0; /* elem added to the list */
}
return head;
}
/** \brief Add a new node after this node
*/
DList *dlist_add_at(DList * node, AppClass * data)
{
DList *head = node;
if (head == NULL) {
head = dlist_new_node(NULL); /* special head node */
}
DList *newnode = dlist_new_node(data);
newnode->prev = head->next->prev;
head->next->prev = newnode;
newnode->next = head->next;
head->next = newnode;
return head;
}
/* add a node at the head */
DList *dlist_add_head(DList * head, AppClass * data)
{
return dlist_add_at(head, data);
}
/* add a node at the tail */
DList *dlist_add_tail(DList * head, AppClass * data)
{
if ( ! head) {
return dlist_add_at(head, data);
}
dlist_add_at(head->prev, data);
return head;
}
/*
* remove node from list
* free the node and data if not refed
*/
void dlist_remove(DList * node)
{
if (node) {
node->prev->next = node->next;
node->next->prev = node->prev;
/* free the node and data */
app_class_unref((AppClass *) node);
}
}
/*
* get next data at head or tail
* return data
*/
AppClass *dlist_get_data(DList * head, DList * node)
{
if (head && node != head) {
return node->data;
}
return NULL;
}
/*
* get next data at head or tail
* remove node from list
* return data
* caller must call app_class_unref to free the data
*/
AppClass *dlist_get_data_rm_node(DList * head, DList * node)
{
AppClass *data = dlist_get_data(head, node);
if (data) {
app_class_ref(data);
dlist_remove(node);
}
return data;
}
/* get next data at head */
AppClass *dlist_dequeue_head(DList * head)
{
if (head) {
return dlist_get_data_rm_node(head, head->next);
}
return NULL;
}
/* get next data at tail */
AppClass *dlist_dequeue_tail(DList * head)
{
if (head) {
return dlist_get_data_rm_node(head, head->prev);
}
return NULL;
}
/** \brief Conditionally delete a node from the list.
*
* Delete a node from the list if the node's data matches the specified
* data. Returns the head of the modified list.
*/
DList *dlist_delete(DList * head, AppClass * data, DListFP_Cmp cmp)
{
if (cmp == NULL) {
msg_fatal("compare function not specified");
}
if (head == NULL) {
return NULL;
}
DList *node = head->next;
while (node != head) {
if ((*cmp) (node->data, data) == 0) {
/* remove the node from the list and also unref the node */
dlist_remove(node);
return head;
}
/* move on to next node */
node = node->next;
}
/* if we get here, data wasn't found, just return original head */
return head;
}
void dlist_delete_list(DList ** head)
{
if ( *head ){
if ( (*head)->next == *head ){
/* destroy special node as well */
app_class_unref((AppClass *) *head );
} else {
dlist_delete_all(*head);
}
*head = NULL;
}
}
/** \brief Blow away the entire list.
* Warning: after this function we must not reuse the head without
* setting it to NULL. Use dlist_delete_list instead.
*/
void dlist_delete_all(DList * head)
{
if (head == NULL) {
return;
}
DList *node = head->next;
DList *next;
while (node != head) {
next = node->next;
app_class_unref((AppClass *) node);
node = next;
}
/* destroy special node as well */
app_class_unref((AppClass *) node);
}
/** \brief Lookup an item in the list.
*
* Walk the list pointed to by head and return a pointer to the data if
* found. If not found, return NULL.
*
* \param head The head of the list to be iterated.
* \param data The data to be passed to the func when it is applied.
* \param cmp A function to be used for comparing the items.
*
* \return A pointer to the data found, or NULL if not found.
*/
AppClass *dlist_lookup(DList * head, AppClass * data, DListFP_Cmp cmp)
{
if (head == NULL) {
return NULL;
}
DList *node = head->next;
if (cmp == NULL) {
msg_fatal("compare function not specified");
}
while (node != head) {
if ((*cmp) (node->data, data) == 0) {
return node->data;
}
node = node->next;
}
/* If we get here, no node was found, return NULL. */
return NULL;
}
/*
* a simple node compare function for the iterator.
*/
int dlist_iterator_cmp(AppClass * n1, AppClass * n2)
{
/*
* Since this is only used in the iterator, we are guaranteed that it is
* safe to compare data pointers because both n1 and n2 came from the
* list.
*/
return (int) (n1 - n2);
}
/** \brief Iterate over all elements of the list.
*
* For each element, call the user supplied iterator function and pass it the
* node data and the user_data. If the iterator function return non-zero,
* remove the node from the list.
*
* \param head The head of the list to be iterated.
* \param func The function to be applied.
* \param user_data The data to be passed to the func when it is applied.
*
* \return An int : return what the function return
* func return:
* - 0 = OK all elements visited - return 0
* - DLIST_RM_NODE = remove the node, stop and return DLIST_RM_NODE
* - DLIST_RM_NODE_CONT = remove the node and continue the loop
* - any other value = stop the loop and return the value
*/
int dlist_iterator(DList * head, DListFP_Iter func, void *user_data)
{
if (func == NULL) {
msg_fatal("no iteration func supplied");
}
if (head == NULL) {
return 0;
}
DList *node = head->next;
while (node != head) {
/*
* WARNING: if next = node->next is placed before the func,
* we can suppress the node but we may have problem adding to the list
* WARNING: if next = node->next is placed after the func
* we have problem if node is suppressed by the func,
* but no problen to add to the list.
*/
int ret = (*func) (node->data, user_data);
/* placed here ! : so NEVER destroy the node in the function */
/* let the following code do the destroy */
DList *next = node->next; /* must be before remove node */
if (ret) {
/* remove node also unref the node + node->data */
if (ret == DLIST_RM_NODE || ret == DLIST_RM_NODE_CONT) {
dlist_remove(node);
}
if (ret != DLIST_RM_NODE_CONT) {
return ret;
}
}
node = next;
}
return 0;
}
/*
* return number of nodes in list
*/
int dlist_get_nelem(DList * head)
{
if (dlist_isempty(head)) {
return 0;
}
DList *node = head->next;
int n = 0;
while (node != head) {
n++;
node = node->next;
}
return n;
}
/*
* get a member of the list at index
*/
AppClass *dlist_get_ndata(DList * head, int n)
{
if (head == NULL) {
return NULL;
}
DList *node = head->next;
int i = 0;
while (node != head) {
if (i == n) {
return node->data;
}
i++;
node = node->next;
}
return NULL;
}

92
lib/dlist.h Normal file
View File

@ -0,0 +1,92 @@
/*
* dlist.h - A generic doubly linked list.
*
* include LICENSE
*/
/*
* *----------------------------------------*
* | |
* o--o---o |
* | prev |>-----------------------------* |
* | next |>------* *-----------* | |
* o--o---o | | | | |
* | o--o---o | o-o--o-o |
* | | next |>--* | next |>--*
* *-------<| prev | *-------<| prev |
* o--o---o | o------o
* | |
* *--------*
* head node1 ... noden
*/
#ifndef APP_DLIST_H
#define APP_DLIST_H
#include <appclass.h>
/***************************************************************************
*
* DList(AppClass) Methods : A doubly linked list.
* A special node is created to hold a pointer to the first node and
* the last node.
* The list acts as Generic FIFO First In First Out.
***************************************************************************/
#define dlist_isempty(head) ((head) == NULL || (head)->next == (head))
#define dlist_getfirst(head) ((head)->next)
#define dlist_getlast(head) ((head)->prev)
/*
* return value for dlist_iterator
*/
#define DLIST_RM_NODE 0x7fff0000 /* remove node and return */
#define DLIST_RM_NODE_CONT 0x7fff0001 /* remove node and continue */
#define DLIST_ITER_STOP 0x7fff0002 /* end the iteration loop */
#define DLIST_CONT 0 /* continue iteration loop */
typedef struct _DList DList;
typedef int (*DListFP_Cmp) (AppClass * d1, AppClass * d2);
typedef int (*DListFP_Iter) (AppClass * data, void *user_data);
struct _DList {
AppClass parent;
struct _DList *prev;
struct _DList *next;
AppClass *data;
};
/*
* prototypes
*/
extern void dlist_destroy_node(void *node);
extern DList *dlist_add(DList * head, AppClass * data, DListFP_Cmp cmp,
int *res);
DList *dlist_add_at(DList * node, AppClass * data);
DList *dlist_add_head(DList * head, AppClass * data);
DList *dlist_add_tail(DList * head, AppClass * data);
void dlist_remove(DList * node);
AppClass *dlist_get_data(DList * head, DList * node);
AppClass *dlist_get_data_rm_node(DList * head, DList * node);
AppClass *dlist_dequeue_head(DList * head);
AppClass *dlist_dequeue_tail(DList * head);
DList *dlist_delete(DList * head, AppClass * data, DListFP_Cmp cmp);
void dlist_delete_all(DList * head);
void dlist_delete_list(DList ** head);
AppClass *dlist_lookup(DList * head, AppClass * data,
DListFP_Cmp cmp);
int dlist_iterator(DList * head, DListFP_Iter func,
void *user_data);
int dlist_iterator_cmp(AppClass * n1, AppClass * n2);
AppClass *dlist_get_ndata(DList * head, int n);
int dlist_get_nelem(DList * head);
int dlist_charPtr_cmp(AppClass * n1, AppClass * n2);
#endif /* APP_DLIST_H */

81
lib/dliststr.c Normal file
View File

@ -0,0 +1,81 @@
/*
* dliststr.c - a list of StrObj's
*
* include LICENSE
*/
#include <stdio.h>
#include <string.h>
#include <msglog.h>
#include <dliststr.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
/** \brief Add a new node to the end of the list. */
DList *dlist_str_add( DList *head, char *pstr, DListFP_Cmp cmp, int *res )
{
StrObj *strobj = str_new( pstr );
return dlist_add( head, (AppClass *) strobj, cmp, res );
}
/** \brief Add a new node at the head of the list. */
DList *dlist_str_add_head( DList *head, char *pstr )
{
StrObj *strobj = str_new( pstr );
return dlist_add_head( head, (AppClass *) strobj );
}
/** \brief Add a new node at the tail of the list. */
DList *dlist_str_add_tail( DList *head, char *pstr )
{
StrObj *strobj = str_new( pstr );
return dlist_add_tail( head, (AppClass *) strobj );
}
/*
* get a member of the list at index
*/
char *dlist_str_node_get_data(DList *node)
{
if ( node ) {
StrObj *strobj = (StrObj *) node->data;
return strobj->pstr;
}
return NULL;
}
/*
* get a member of the list at index
*/
char *dlist_str_get_ndata(DList *head, int index)
{
StrObj *strobj;
if ( ( strobj = (StrObj *) dlist_get_ndata(head, index)) ) {
return strobj->pstr;
}
return NULL;
}
DList *dlist_str_set_ndata( DList *head, char *nstr, int index)
{
StrObj *strobj;
if ( ( strobj = (StrObj *) dlist_get_ndata(head, index)) ) {
str_replace( strobj, nstr);
} else {
strobj = str_new(nstr);
head = dlist_add_tail( head, (AppClass *) strobj );
}
return head;
}

25
lib/dliststr.h Normal file
View File

@ -0,0 +1,25 @@
#ifndef DLISTSTR_H
#define DLISTSTR_H
/*
* dliststr.h - function to handle string in DList
*
* include LICENSE
*/
#include <strobj.h>
#include <dlist.h>
/*
* prototypes
*/
DList *dlist_str_add( DList *head, char *pstr, DListFP_Cmp cmp, int *res );
DList *dlist_str_add_head( DList *head, char *pstr );
DList *dlist_str_add_tail( DList *head, char *pstr );
char *dlist_str_node_get_data(DList *node);
char *dlist_str_get_ndata(DList *head, int index);
DList *dlist_str_set_ndata( DList *head, char *nstr, int index);
#endif /* DLISTSTR_H */

45
lib/duprintf.c Normal file
View File

@ -0,0 +1,45 @@
/**
* \file duprintf.c
* \brief strdup printf function
*
* stolen from glib
*
* include LICENSE
*/
#define _GNU_SOURCE
#include <stdio.h>
#include <string.h>
#include <duprintf.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
char *app_strdup_vprintf(const char *format, va_list args)
{
char *string = NULL;
/* vasprintf returns malloc-allocated memory */
int len = vasprintf(&string, format, args);
if (len < 0) {
string = NULL;
}
return string;
}
char *app_strdup_printf(const char *format, ...)
{
char *buffer;
va_list args;
va_start(args, format);
buffer = app_strdup_vprintf(format, args);
va_end(args);
return buffer;
}

18
lib/duprintf.h Normal file
View File

@ -0,0 +1,18 @@
#ifndef DUPRINTF_H
#define DUPRINTF_H
/*
* duprintf.h - Interface to app_strdup_printf
*
* include LICENSE
*/
#include <stdarg.h>
#include <strmem.h>
#include <appmem.h>
char *app_strdup_vprintf(const char *format, va_list args);
char *app_strdup_printf(const char *format, ...);
#endif /* DUPRINTF_H */

148
lib/fdbuf.c Normal file
View File

@ -0,0 +1,148 @@
/*
* fdbuf.c - file dynamic buffer functions
*
* include LICENSE
*/
#define _GNU_SOURCE /* stdio.h fseeko */
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <fdbuf.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
/** \brief Allocates memory for a new FDBuf object. */
FDBuf *
fdbuf_new( char *filename, char *mode, int size)
{
FDBuf *fdbuf;
fdbuf = app_new0(FDBuf, 1 );
fdbuf_construct( fdbuf, filename, mode, size);
app_class_overload_destroy( (AppClass *) fdbuf, fdbuf_destroy );
return fdbuf;
}
/** \brief Constructor for the FDBuf object. */
void
fdbuf_construct( FDBuf *fdbuf, char *filename, char *mode, int size)
{
dbuf_construct( (DBuf *) fdbuf, size, NULL );
fdbuf->filename = app_strdup(filename);
fdbuf->flags = FDB_STRIP_CR; /* remove cr by default */
fdbuf->fd = fopen( filename, mode );
if ( fdbuf->fd == NULL ) {
msg_error(_("Can't open file '%s'"), filename );
fdbuf->status = -1;
}
}
/** \brief Destructor for the FDBuf object. */
void fdbuf_destroy( void *fdbuf)
{
FDBuf *this = (FDBuf *) fdbuf;
if ( fdbuf == NULL ) {
return;
}
app_free(this->filename);
if ( this->fd ) {
fclose( this->fd );
}
dbuf_destroy( fdbuf );
}
/*
* remove cr in crlf
*/
void fdbuf_set_flags(FDBuf *dest, int flags)
{
dest->flags = flags;
}
char *fdbuf_get_line(FDBuf *dest)
{
int c;
int lastc = 0;
dbuf_clear((DBuf *) dest);
while ((c = fgetc(dest->fd)) >= 0) {
if ( c == '\n' && lastc == '\\' && (dest->flags & FDB_JOIN_LINES) ) {
dbuf_unput_char( (DBuf *) dest ); /* remove lastc */
c = ' ';
dest->lineno++;
}
if (c == '\n' || c == 0 ) {
break;
}
dbuf_put_char( (DBuf *) dest, c);
lastc = c;
}
if ( (dest->flags & FDB_STRIP_CR) && c == '\n' && lastc == '\r' ) {
dbuf_unput_char( (DBuf *) dest );
}
if ( c < 0 && dbuf_get_len((DBuf *) dest ) == 0) {
return NULL;
}
dest->lineno++;
return ((DBuf *) dest)->s;
}
/*
* read stream in DBuf at start
*/
int fdbuf_read(FDBuf *dest, int nbytes )
{
int n;
DBuf *dbuf = (DBuf *) dest;
dbuf_check_size( dbuf, nbytes);
n = fread( dbuf->s, 1, nbytes, dest->fd );
dbuf->len = 0;
if ( n > 0 ){
dbuf->len = n;
}
*(dbuf->s + dbuf->len) = 0;
return n;
}
void fdbuf_rewind( FDBuf *fdbuf)
{
fdbuf->lineno = 0;
if (fseeko(fdbuf->fd, 0L, SEEK_SET) < 0) {
msg_fatal(_("Seek error '%s': %s"), fdbuf->filename, strerror(errno) );
}
}
int fdbuf_fseeko( FDBuf *fdbuf, off_t offset, int whence)
{
return fseeko(fdbuf->fd, offset, whence);
}
off_t fdbuf_tello( FDBuf *fdbuf)
{
return ftello(fdbuf->fd);
}
int fdbuf_get_lineno( FDBuf *fdbuf)
{
return fdbuf->lineno;
}
char *fdbuf_get_buffer( FDBuf *fdbuf )
{
return ((DBuf *) fdbuf)->s;
}

43
lib/fdbuf.h Normal file
View File

@ -0,0 +1,43 @@
#ifndef FILE_DBUF_H
#define FILE_DBUF_H
/*
* fdbuf.c - file dynamic buffer interface
*
* include LICENSE
*/
#define _GNU_SOURCE /* off_t */
#include <sys/types.h>
#include <dbuf.h>
enum _FDbufFlagsInfo {
FDB_STRIP_CR = ( 1 << 0 ), /* if set remove crlf - \r\n -> \n */
FDB_JOIN_LINES = ( 1 << 1 ), /* if set join lines - \\n -> ' ' */
};
typedef struct _FDBuf FDBuf;
struct _FDBuf {
DBuf parent;
char *filename;
FILE *fd; /* filedesc */
int flags; /* see _FDbufFlagsInfo */
int lineno; /* line number */
int status; /* op status */
};
FDBuf *fdbuf_new( char *filename, char *mode, int size);
void fdbuf_construct( FDBuf *fdbuf, char *filename, char *mode, int size);
void fdbuf_destroy(void *fdbuf);
char *fdbuf_get_line(FDBuf *dest);
void fdbuf_set_flags(FDBuf *dest, int flags);
void fdbuf_rewind( FDBuf *fdbuf);
int fdbuf_get_lineno( FDBuf *fdbuf);
void fdbuf_set_lineno( FDBuf *fdbuf, int lineno);
int fdbuf_read(FDBuf *dest, int nbytes );
off_t fdbuf_tello( FDBuf *fdbuf);
int fdbuf_fseeko( FDBuf *fdbuf, off_t offset, int whence);
char *fdbuf_get_buffer( FDBuf *fdbuf );
#endif /* FILE_DBUF_H */

95
lib/fdsel.c Normal file
View File

@ -0,0 +1,95 @@
/*
* fdsel.c - file descriptor select object. Use this if you don't have a loop
*
* include LICENSE
*/
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <sys/select.h>
#include <fdsel.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
/*
*** \brief Allocates memory for a new FdescSelect object.
*/
FdescSelect *fdsel_new( int fd, long sec, long usec )
{
FdescSelect *fds;
fds = app_new0(FdescSelect, 1);
fdsel_construct( fds, fd, sec, usec );
app_class_overload_destroy( (AppClass *) fds, fdsel_destroy );
return fds;
}
/** \brief Constructor for the FdescSelect object. */
void fdsel_construct( FdescSelect *fds, int fd, long sec, long usec)
{
app_class_construct( (AppClass *) fds );
fds->fd = fd;
fdsel_set_timeout(fds, sec, usec);
}
/** \brief Destructor for the FdescSelect object. */
void fdsel_destroy(void *fds)
{
// FdescSelect *this = (FdescSelect *) fds;
if (fds == NULL) {
return;
}
app_class_destroy( fds );
}
void fdsel_set_fd(FdescSelect *fds, int fd)
{
fds->fd = fd;
}
void fdsel_set_timeout(FdescSelect *fds, long sec, long usec)
{
fds->timeout_sec = sec;
fds->timeout_usec = usec;
}
int fdsel_is_ready(FdescSelect *fds, int check)
{
int i = 0;
fd_set fdset ;
int nfds;
struct timeval sel_timeout ;
sel_timeout.tv_sec = 0 ;
sel_timeout.tv_usec = 0 ;
if ( check & FDSEL_CHECK_TIMEOUT ) {
sel_timeout.tv_sec = fds->timeout_sec ;
sel_timeout.tv_usec = fds->timeout_usec ;
}
FD_ZERO(&fdset) ;
FD_SET(fds->fd, &fdset) ;
nfds = fds->fd + 1;
if ( check & FDSEL_CHECK_READ) {
i = select(nfds, &fdset, NULL, NULL, &sel_timeout ) ;
} else if ( check & FDSEL_CHECK_WRITE) {
i = select(nfds, NULL, &fdset, NULL, &sel_timeout ) ;
}
if ( i == -1 ) {
msg_error(_("select error '%s'"), strerror(errno) ) ;
} else if ( i > 0 ) {
return 1;
}
return 0;
}

38
lib/fdsel.h Normal file
View File

@ -0,0 +1,38 @@
#ifndef FDSEL_H
#define FDSEL_H
/*
* fdsel.h - file descriptor select object.
*
* include LICENSE
*/
#include <appclass.h>
enum _FdselCheckInfo {
FDSEL_CHECK_READ = 1 << 0, /* is socket ready for read ? */
FDSEL_CHECK_WRITE = 1 << 1, /* is socket ready for write ? */
FDSEL_CHECK_TIMEOUT = 1 << 2, /* set a timeout or not */
};
typedef struct _FdescSelect FdescSelect;
struct _FdescSelect {
AppClass parent;
long timeout_sec; /* timeout seconds */
long timeout_usec; /* timeout microseconds */
int fd; /* file descriptor */
};
/*
* prototypes
*/
FdescSelect *fdsel_new( int fd, long sec, long usec );
void fdsel_construct( FdescSelect *fds, int fd, long sec, long usec );
void fdsel_destroy(void *fds);
void fdsel_set_fd(FdescSelect *fds, int fd);
void fdsel_set_timeout(FdescSelect *fds, long sec, long usec);
int fdsel_is_ready(FdescSelect *fds, int check);
#endif /* FDSEL_H */

309
lib/fileformat.c Normal file
View File

@ -0,0 +1,309 @@
/*
* fileformat.c - fileformat interface functions
*
* include LICENSE
*/
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <spicestream.h>
#include <fileformat.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
#define SS_NOT_USE_REGEX 0
#define SS_USE_REGEX 1
extern int sf_rdhdr_hsascii( SpiceStream *ss );
extern int sf_rdhdr_hsbin( SpiceStream *ss );
extern int sf_rdhdr_cazm( SpiceStream *ss );
extern int sf_rdhdr_s3raw( SpiceStream *ss );
extern int sf_rdhdr_s2raw( SpiceStream *ss );
extern int sf_rdhdr_ascii( SpiceStream *ss );
extern int sf_rdhdr_nsout( SpiceStream *ss );
extern int sf_rdhdr_wav( SpiceStream *ss );
extern int sf_readrow_ascii( SpiceStream *ss );
extern int sf_readrow_hspice( SpiceStream *ss );
extern int sf_readrow_nsout( SpiceStream *ss );
extern int sf_readrow_s3raw( SpiceStream *ss );
extern int sf_readrow_s2raw( SpiceStream *ss );
extern int sf_readrow_wav( SpiceStream *ss );
extern int sf_write_file_ascii( FILE *fd, WaveTable *wt, char *fmt );
extern int sf_write_file_nsout( FILE *fd, WaveTable *wt, char *fmt );
extern int sf_write_file_hsascii( FILE *fd, WaveTable *wt, char *fmt );
extern int sf_write_file_s3ascii( FILE *fd, WaveTable *wt, char *fmt );
extern int sf_write_file_s2raw( FILE *fd, WaveTable *wt, char *fmt );
extern int sf_write_file_wav( FILE *fd, WaveTable *wt, char *fmt );
char *hspivepat[] = {
"tr[0-9]",
"sw[0-9]",
"ac[0-9]",
NULL
};
char *cazmpat[] = {
"BNW]",
NULL
};
char *spice3pat[] = {
"raw",
NULL
};
char *spice2pat[] = {
"rawspice",
NULL
};
char *nsoutpat[] = {
"out",
NULL
};
char *wavpat[] = {
"wav",
NULL
};
char *asciipat[] = {
"asc",
"acs",
"ascii",
"dat",
NULL
};
static FileFormat format_tab[] = {
{ "hsascii", "\\.(tr|sw|ac)[0-9]$", NULL,
sf_rdhdr_hsascii, sf_readrow_hspice, sf_write_file_hsascii,
hspivepat },
{ "hsbinary", "\\.(tr|sw|ac)[0-9]$", NULL,
sf_rdhdr_hsbin, sf_readrow_hspice, NULL,
hspivepat },
{ "cazm", "\\.[BNW]$", NULL,
sf_rdhdr_cazm, sf_readrow_ascii, NULL,
cazmpat },
{ "spice3raw", "\\.raw$", NULL,
sf_rdhdr_s3raw, sf_readrow_s3raw, sf_write_file_s3ascii,
spice3pat },
{ "spice2raw", "\\.rawspice$", NULL,
sf_rdhdr_s2raw , sf_readrow_s2raw, sf_write_file_s2raw,
spice2pat },
{ "nsout", "\\.out$" , NULL,
sf_rdhdr_nsout, sf_readrow_nsout, sf_write_file_nsout,
nsoutpat },
{ "wav", "\\.wav$" , NULL,
sf_rdhdr_wav, sf_readrow_wav, sf_write_file_wav,
wavpat },
{ "ascii", "\\.(asc|acs|ascii|dat)$", NULL,
sf_rdhdr_ascii, sf_readrow_ascii, sf_write_file_ascii,
asciipat },
};
static const int NFormats = sizeof(format_tab) / sizeof(format_tab[0]);
void fileformat_cleanup(void)
{
int i;
for (i = 0; i < NFormats; i++) {
if ( format_tab[i].creg) {
g_free(format_tab[i].creg);
}
}
}
static regex_t *regexp_compile(char *str)
{
int err;
char ebuf[128];
regex_t *creg;
creg = g_new(regex_t, 1);
err = regcomp(creg, str, REG_NOSUB | REG_EXTENDED);
if (err) {
regerror(err, creg, ebuf, sizeof(ebuf));
msg_fatal(_("internal error (in regexp %s):\n %s"), str, ebuf );
}
return creg;
}
char *fileformat_get_next_name( int *i, int option )
{
int idx = ++(*i);
if ( idx >= 0 && idx < NFormats ){
if ( (option == FILE_WRITE_OP && format_tab[*i].wrFilefunc) ||
(option == FILE_READ_OP && format_tab[*i].rdRowfunc) ||
option == 0 ){
return format_tab[*i].name;
}
} else {
*i = -1;
}
if ( idx == NFormats && option == FILE_READ_OP ){
return "auto";
}
return NULL;
}
int fileformat_get_index(char *format )
{
int i;
for ( i = 0 ; i < NFormats; i++) {
if ( app_strcmp(format, format_tab[i].name) == 0) {
return i;
}
}
return -1;
}
ReadRowFP fileformat_get_read_func(int index)
{
if ( index < 0 ) {
return NULL;
}
return format_tab[index].rdRowfunc;
}
ReadRowFP fileformat_get_readhdr_func(int index)
{
if ( index < 0 ) {
return NULL;
}
return format_tab[index].rdHeaderfunc;
}
WriteFileFP fileformat_get_write_func(int index)
{
if ( index < 0 ) {
return NULL;
}
return format_tab[index].wrFilefunc;
}
char **fileformat_get_patterns(int index)
{
if ( index < 0 ) {
return NULL;
}
return format_tab[index].globlist;
}
int fileformat_try_format( SpiceStream *ss, int index )
{
int ret = (format_tab[index].rdHeaderfunc)(ss);
if ( ret <= 0) {
fdbuf_rewind(ss->linebuf);
}
return ret;
}
int fileformat_find_format( SpiceStream *ss, char *filename, int use_regex)
{
int i;
int ret;
for (i = 0; i < NFormats; i++) {
if ( ! format_tab[i].creg) {
format_tab[i].creg = regexp_compile(format_tab[i].fnrexp);
}
if (use_regex == 0 || regexec(format_tab[i].creg, filename, 0, NULL, 0) == 0) {
ret = fileformat_try_format( ss, i);
if (ret == 1) {
msg_dbg("%s: read with format \"%s\"", filename, format_tab[i].name);
return i;
}
}
}
return -1;
}
/*
* return >= 0 : index of format if successfull read of the header
* or -1 if error
*/
int fileformat_read_header( SpiceStream *ss)
{
int i;
char *format = ss->format;
if ( format && *format == 0 ) {
format = NULL;
}
if ( format && app_strcmp(format, "auto" ) ){
if ( app_strcmp(format, "hspice") == 0 ) {
i = fileformat_get_index("hsaccii");
if ( i >= 0 && fileformat_try_format( ss, i ) == 1 ){
return i;
}
i = fileformat_get_index("hsbinary");
if ( i >= 0 && fileformat_try_format( ss, i ) == 1 ){
return i;
}
} else {
i = fileformat_get_index(format);
if ( i >= 0 && fileformat_try_format( ss, i ) == 1 ){
return i;
} else {
msg_error(_("%s:\n is not a \"%s\" Format."),
ss->filename, format);
}
}
i = -1;
} else {
/* try to guess format from filename */
i = fileformat_find_format( ss, ss->filename, SS_USE_REGEX );
if ( i < 0) {
msg_dbg("%s: couldn't guess a format from filename suffix.", ss->filename);
i = fileformat_find_format( ss, ss->filename, SS_NOT_USE_REGEX );
if ( i < 0 ) {
msg_error(_("%s: couldn't read with any format"), ss->filename);
}
}
}
return i;
}
int fileformat_file_write( WaveTable *wt, char *filename, char *format, char *fmt)
{
int i;
int ret;
if ( format == NULL ) {
format = "ascii";
}
if ((i = fileformat_get_index(format)) < 0 ) {
msg_error( _("Can't find format '%s'"), format );
return -1;
}
WriteFileFP write_func = fileformat_get_write_func(i);
if ( ! write_func ) {
msg_error(_("Write function not yet implemented for format '%s'"), format );
return -1;
}
FILE *fd = fopen(filename, "w");
if ( fd == NULL ) {
msg_error(_("Can't open file '%s': %s"), filename, strerror (errno));
return -1;
}
ret = write_func ( fd, wt, fmt);
fclose(fd);
return ret;
}

43
lib/fileformat.h Normal file
View File

@ -0,0 +1,43 @@
#ifndef FILEFORMAT_H
#define FILEFORMAT_H
/*
* fileformat.h - fileformat protocol interface
*
* include LICENSE
*/
#include <sys/types.h>
#include <regex.h>
#define FILE_READ_OP 1
#define FILE_WRITE_OP 2
typedef struct _FileFormat FileFormat;
struct _FileFormat {
char *name; /* format name */
char *fnrexp; /* regex to match the file extension name */
regex_t *creg; /* compiled form of regexp */
ReadHeaderFP rdHeaderfunc;
ReadRowFP rdRowfunc;
WriteFileFP wrFilefunc;
char **globlist; /* shell style glob patterm list */
};
/*
* prototypes
*/
char *fileformat_get_next_name( int *i, int option);
int fileformat_get_index(char *format);
ReadHeaderFP fileformat_get_readhdr_func(int index);
ReadRowFP fileformat_get_read_func(int index);
WriteFileFP fileformat_get_write_func(int index);
int fileformat_read_header( SpiceStream *ss);
int fileformat_file_write( WaveTable *wt, char *filename, char *format, char *fmt);
char **fileformat_get_patterns(int index);
void fileformat_cleanup(void);
#endif /* FILEFORMAT_H */

42
lib/fileutil.c Normal file
View File

@ -0,0 +1,42 @@
/*
* fsutil.c - file utility functions
*
* include LICENSE
*/
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <fileutil.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
int file_exists (const char *filename)
{
struct stat statbuf;
return stat (filename, &statbuf) == 0;
}
/*
* return size of the file
*
* for an open file use this, it is faster !
* size = lseek(fd, 0L, SEEK_END);
* lseek(fd, 0L, SEEK_SET);
*/
off_t file_size (const char *filename)
{
struct stat statbuf;
if ( stat (filename, &statbuf) == 0 ) {
return statbuf.st_size;
}
return -1;
}

19
lib/fileutil.h Normal file
View File

@ -0,0 +1,19 @@
#ifndef FILEUTIL_H
#define FILEUTIL_H
#include <sys/types.h>
#include <sys/stat.h>
/*
* fileutil.h - file utility interface
*
* include LICENSE
*/
/*
* prototypes
*/
int file_exists (const char *filename);
off_t file_size (const char *filename);
#endif /* FILEUTIL_H */

62
lib/fsutil.c Normal file
View File

@ -0,0 +1,62 @@
/*
* fsutil.c - filesystem utility functions
*
* include LICENSE
*/
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <pwd.h>
#include <errno.h>
#include <appmem.h>
#include <strmem.h>
#include <strcatdup.h>
#include <fsutil.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
char *fsu_getcwd(void)
{
char buf[BUFSIZ];
if ( getcwd( buf, sizeof(buf)) ) {
return app_strdup( buf );
}
msg_fatal("Can't get cwd.");
}
char *fsu_home_dir (void)
{
char *home = getenv ("HOME");
if ( ! home) {
/*
* If HOME is not defined, try getting it from the password file.
*/
struct passwd *pwd = getpwuid (getuid ());
if ( ! pwd || !pwd->pw_dir) {
return NULL;
}
home = pwd->pw_dir;
}
return home ;
}
char *fsu_absolute_name( char *dir, char *name)
{
if ( *name == '/' ) {
/* absolute name */
return app_strdup(name);
} else {
/* relative file */
return app_strcatdup( dir, "/", name, 0 );
}
}

15
lib/fsutil.h Normal file
View File

@ -0,0 +1,15 @@
#ifndef FSUTIL_H
#define FSUTIL_H
/*
* fsutil.c - filesystem utility functions
*
* include LICENSE
*/
char *fsu_home_dir (void);
char *fsu_getcwd(void);
char *fsu_absolute_name( char *dir, char *fname);
#endif /* FSUTIL_H */

141
lib/incvar.c Normal file
View File

@ -0,0 +1,141 @@
/*
* incvar.c - keep track of user variables for rewriting
* line interface
*
* include LICENSE
*/
#include <stdio.h>
#include <string.h>
#include <msglog.h>
#include <array.h>
#include <dliststr.h>
#include <strcatdup.h>
#include <incvar.h>
#include <duprintf.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
/*
*** \brief Allocates memory for a new IncVar object.
*/
IncVar *var_new( unsigned int linenum, void *varptr, int vartype )
{
IncVar *var;
var = app_new0(IncVar, 1);
var_construct( var, linenum, varptr, vartype );
app_class_overload_destroy( (AppClass *) var, var_destroy );
return var;
}
/** \brief Constructor for the IncVar object. */
void var_construct( IncVar *var, unsigned int linenum, void *varptr, int vartype )
{
app_class_construct( (AppClass *) var );
var->linenum = linenum;
var->varptr = varptr;
var->vartype = vartype;
}
/** \brief Destructor for the IncLine object. */
void var_destroy(void *var)
{
// IncVar *this = (IncVar *) var;
if (var == NULL) {
return;
}
app_class_destroy( var );
}
char *var_mkstr(void *varptr, int vartype)
{
char *pstr;
char *tmpstr;
switch( vartype) {
case TBOOL:
{
int *pi = (int *) varptr;
return app_strdup_printf("%d", (*pi ? 1 : 0) ) ;
}
break ;
case TDECI: {
int *pi = (int *) varptr;
return app_strdup_printf( "%d", *pi ) ;
}
break ;
case THEXA :
{
int *pi = (int *) varptr;
return app_strdup_printf( "0x%X", *pi ) ;
}
break ;
case TPTR:
{
char *p = *((char **) varptr);
if ( ! p ) {
return NULL;
}
/* always put string in quotes */
return app_strdup_printf("\"%s\"", p ) ;
}
break ;
case TARYSTR:
{
int i;
Array *ary = *((Array **) varptr);
int num = array_get_nelem(ary);
char *retptr = app_strdup("");
char *sep = "";
for ( i = 0 ; i < num ; i++ ) {
pstr = array_tbl_get(ary, i);
/* always put string in quotes */
tmpstr = app_strdup_printf("\"%s\"", pstr );
retptr = app_strappend( retptr, tmpstr, sep);
sep = ", ";
}
return retptr;
}
break;
case TLIST:
{
DList *head = *((DList **) varptr);
DList *node = head;
if ( head ) {
node = head->next;
}
char *retptr = app_strdup("");
char *sep = "";
int i = 0;
while (node != head) {
pstr = dlist_str_node_get_data(node);
/* always put string in quotes */
tmpstr = app_strdup_printf("\"%s\"", pstr );
retptr = app_strappend( retptr, tmpstr, sep );
sep = ", ";
i++;
node = node->next;
}
return retptr;
}
}
return NULL;
}
char *var_get_str(IncVar *var)
{
return var_mkstr(var->varptr, var->vartype);
}

62
lib/incvar.h Normal file
View File

@ -0,0 +1,62 @@
#ifndef INCVAR_H
#define INCVAR_H
/*
* incvar.h - info for rewriting variables
*
* include LICENSE
*/
enum _VarTypeInfo {
TBOOL = 1,
TDECI,
THEXA,
TPTR, /* pointer to malloced string */
TARYSTR, /* array of pointer to string */
TARY, /* array of pointer to object */
TLIST, /* string with elements separated with ',' */
TCMT, /* comment type */
TINI, /* initialize entry */
};
#include <appclass.h>
/*
* line coding field
* line number : 19 bit
* file type : 4
* file number : 8
* count modified : 1
*/
enum _lineFieldInfo {
LF_TYPESHIFT = 19,
LF_FNUMSHIFT = 23,
LF_LINEMSK = (1 << LF_TYPESHIFT) - 1,
LF_TYPEMSK = ((1 << LF_FNUMSHIFT) - 1) & ~LF_LINEMSK,
LF_MODIFIED = (unsigned int) (1 << 31),
LF_FNUMMSK = (LF_MODIFIED - 1) & ~(LF_TYPEMSK | LF_LINEMSK) ,
};
typedef struct _IncVar IncVar;
struct _IncVar {
AppClass parent;
unsigned int linenum; /* line number where the rule is */
void *varptr; /* address of the variable */
int vartype; /* type of the variable e */
};
/*
* prototypes
*/
IncVar *var_new( unsigned int linenum, void *varptr, int vartype );
void var_construct( IncVar *var, unsigned int linenum, void *varptr, int vartype);
void var_destroy(void *var);
char *var_mkstr(void *varptr, int vartype);
char *var_get_str(IncVar *var);
#endif /* INCVAR_H */

423
lib/msglog.c Normal file
View File

@ -0,0 +1,423 @@
/**
* \file msglog.c
* \brief Functions for printing messages, warnings and errors.
*
* This module provides output printing facilities.
*
* include LICENSE
*/
#define _GNU_SOURCE
#include <stdio.h>
#include <signal.h>
#include <stdarg.h>
#include <string.h>
#include <time.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include <ctype.h>
#include <msglog.h>
#include <duprintf.h>
#ifdef TRACE_MEM
#include <tracemem.h>
#endif
#define MSG_FMT_DATE \
"%2d %3s %4d %2d:%02d:%02d", \
ptm->tm_mday, msg_month_of_year[ptm->tm_mon], (1900 + ptm->tm_year), \
ptm->tm_hour, ptm->tm_min, ptm->tm_sec
const char *msg_month_of_year[] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
};
const char *msg_day_of_week[] = {
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
};
const char *msg_typename[] = {
"DEBUG",
"INFO",
"WARNING",
"ERROR",
"FATAL",
};
/* see man console_codes */
#define COL(x) "\033[" #x ";1m"
#define RED COL(31)
#define GREEN COL(32)
#define YELLOW COL(33)
#define BLUE COL(34)
#define MAGENTA COL(35)
#define CYAN COL(36)
#define WHITE COL(37)
#define GRAY "\033[0m" /* end of color */
const char *msg_color[] = {
"", /* Debug */
"", /* info */
GREEN, /* Warning */
RED, /* Error */
BLUE, /* Fatal */
};
int prog_debug; /* global turn debug on */
MsgLogData *msglogp; /* global pointeur to MsgLogData in main */
/*
* struct _MsgLogData moved from msglog.h
* Let use different msglog.c without changing msglog.h
*/
struct _MsgLogData {
FILE *msg_fd;
FILE *dbg_fd; /* debug message file desc */
char *msg_progname;
int msg_flags;
int msg_verbose_level;
int msg_dbg_msk;
// int msg_dump_msk;
char *msg_filename;
int log_facility; /* storage for facility used in syslog */
int logger_is_open; /* set if openlog has been called */
MsgFunc msg_displayFunc;
};
/*
* if given filename store message in file
* if given displayFunc call func to display messge
* except for debug message
*/
void msg_set_func(MsgFunc displayFunc)
{
msglogp->msg_displayFunc = displayFunc;
if (displayFunc) {
msglogp->msg_flags &= ~MSG_F_TYPE;
}
}
void msg_set_facility(int facility)
{
msglogp->log_facility = facility;
}
int msg_get_facility(void)
{
return msglogp->log_facility;
}
void msg_set_logger_is_open(int is_open)
{
msglogp->logger_is_open = is_open;
}
int msg_get_logger_is_open(void)
{
return msglogp->logger_is_open;
}
void msg_initlog(char *name, int flags, char *filename,
MsgFunc displayFunc)
{
if (!msglogp) {
msglogp = app_new0(MsgLogData, 1);
}
msglogp->msg_progname = name;
msglogp->msg_flags = flags;
msglogp->msg_verbose_level = 1;
msglogp->msg_dbg_msk = 1;
msg_set_func(displayFunc);
msglogp->msg_fd = stderr;
msglogp->dbg_fd = stderr;
if (filename) {
char *omode = "a";
if (flags & MSG_F_OVERWRITE) {
omode = "w";
}
msg_openlog(filename, omode);
}
atexit(msg_closelog);
}
FILE * msg_get_msg_fd(void)
{
return msglogp->msg_fd;
}
void msg_set_dbg_fd(FILE * msg_fd )
{
msglogp->dbg_fd = msg_fd;
}
void msg_atexit(void)
{
if (msglogp) {
if (msglogp->msg_flags & MSG_F_SIGNAL) {
kill(getppid(), SIGQUIT);
}
msg_closelog();
app_free(msglogp);
msglogp = NULL;
}
}
void msg_set_flags(int flags)
{
msglogp->msg_flags = flags;
}
void msg_set_level(int level)
{
msglogp->msg_verbose_level = level;
}
int msg_get_level(void)
{
return msglogp->msg_verbose_level;
}
#ifdef MSG_DEBUG
void private_msg_set_dbg_msk(int msk)
{
msglogp->msg_dbg_msk = msk;
}
int private_msg_get_dbg_msk(void)
{
return msglogp->msg_dbg_msk;
}
void private_msg_get_dbg_msk_str(char *msg)
{
unsigned int i;
int k = 0;
int msk = msglogp->msg_dbg_msk;
for ( i = 0 ; i < 8 * sizeof(int) ; i++ ){
if ( msk & (1 << i) ){
if ( k ) {
msg[k] = ',';
k++;
}
sprintf(&msg[k], "%d", i);
k++;
if ( i > 9) {
k++;
}
}
}
msg[k] = 0;
}
unsigned int private_msg_set_dbg_msk_str(char *p)
{
unsigned int ui = 1;
int i;
if ( *p == 0 ){
prog_debug = 0;
goto finish;
}
while (1) {
i = strtoul(p, &p, 10);
ui |= (1 << i);
if (*p == 0) {
break;
}
p++;
}
prog_debug = 1;
finish:
msglogp->msg_dbg_msk = ui;
return ui;
}
#endif
#ifdef MSG_DUMP
void private_msg_dump(int level, char *buf, int len, int start, FILE *fd,
char *fmt, ...)
{
int i;
int n;
char msgbuf[50];
char lastline[50];
char cbuf[18];
int dup = 0;
int print_offset = 1;
va_list ap;
if ((level & msglogp->msg_dbg_msk) == 0) {
return;
}
if ( fd == NULL ){
fd = msglogp->msg_fd;
}
if (fmt) {
char *ffmt;
va_start(ap, fmt);
ffmt = app_strdup_vprintf(fmt, ap);
va_end(ap);
fprintf(fd, "%s: %d\n", ffmt, len );
app_free(ffmt);
}
if ( start == -1 ){
print_offset = 0;
}
lastline[0] = 0;
while (len > 0) {
int k = 0;
n = 16;
if (len < n) {
n = len;
}
for (i = 0; i < n; i++) {
sprintf(&msgbuf[k], "%02X ", (unsigned char) *buf);
k += 3;
if ( i == 7){
msgbuf[k] =' ';
k++;
}
if (isprint(*buf & 0x7F)) {
cbuf[i] = *buf & 0x7F;
} else {
cbuf[i] = '.';
}
buf++;
}
cbuf[i] = 0;
msgbuf[k] = 0;
len -= i;
if (strcmp(msgbuf, lastline) == 0 && len > 0) {
dup++;
} else {
if (dup > 0) {
fprintf(fd, " -- prev line repeats %d times --\n", dup);
}
dup = 0;
strcpy(lastline, msgbuf);
if ( print_offset ){
fprintf(fd, "%8X: ", (unsigned int) start);
}
fprintf(fd, "%-49s %s\n", msgbuf, cbuf);
}
start += n;
}
}
#endif
/*
* msg_openlog :
* send log messages to a file if needed
*/
FILE *msg_openlog(char *filename, char *mode)
{
msglogp->msg_filename = filename;
if ((msglogp->msg_fd = fopen(filename, mode)) == NULL) {
msglogp->msg_fd = stderr; /* just to get the next mesg */
msg_fatal(_("Can't open file '%s': %s"), filename, strerror(errno));
}
if ( prog_debug ){
msglogp->dbg_fd = msglogp->msg_fd;
}
return msglogp->msg_fd;
}
void msg_closelog(void)
{
if (msglogp->msg_fd != stderr) {
fclose(msglogp->msg_fd);
msglogp->msg_fd = stderr;
}
}
void msg_str_time_date(char *strdate);
void msg_str_time_date(char *strdate)
{
time_t now;
struct tm *ptm;
time(&now);
ptm = localtime(&now);
sprintf(strdate, MSG_FMT_DATE);
}
void private_message(int level, int msgtype, const char *func, char *file,
int line, char *fmt, ...)
{
va_list ap;
char *ffmt;
char date[128];
char text[128];
char *p;
char *color_s = "";
char *color_e = "";
if (msgtype == MSG_T_DEBUG) {
if ((msglogp->msg_dbg_msk & level) == 0) {
return;
}
} else if (level > msglogp->msg_verbose_level) {
return;
}
date[0] = 0;
if (msglogp->msg_flags & MSG_F_DATE) {
msg_str_time_date(date);
strcat(date, ": ");
}
if (msglogp->msg_flags & MSG_F_PROG) {
if (msglogp->msg_progname && *msglogp->msg_progname) {
p = date + strlen(date);
snprintf(p, sizeof(date) - strlen(date), "%s: ",
msglogp->msg_progname);
}
}
text[0] = 0;
if (msgtype == MSG_T_DEBUG || msglogp->msg_flags & MSG_F_TYPE) {
p = text + strlen(text);
snprintf(p, sizeof(text) - strlen(text), "%s: ",
msg_typename[msgtype]);
}
if (msglogp->msg_flags & MSG_F_FUNC) {
p = text + strlen(text);
snprintf(p, sizeof(text) - strlen(text), "%s: ", func);
}
if (msglogp->msg_flags & MSG_F_FILE) {
p = text + strlen(text);
snprintf(p, sizeof(text) - strlen(text), "%s:%d: ", file, line);
}
if (msglogp->msg_flags & MSG_F_COLOR) {
color_s = (char *) msg_color[msgtype];
if (msgtype > MSG_T_INFO) {
color_e = GRAY;
}
}
va_start(ap, fmt);
ffmt = app_strdup_vprintf(fmt, ap);
va_end(ap);
if (msglogp->msg_flags & MSG_F_FOLD) {
if (strlen(date) + strlen(text) + strlen(ffmt) > 80) {
strcat(text, "\n ");
}
}
if (msgtype == MSG_T_DEBUG) {
fprintf(msglogp->dbg_fd, "%s%s%s\n", date, text, ffmt);
fflush(msglogp->dbg_fd);
} else if (msglogp->msg_displayFunc) {
char message[1024];
snprintf(message, sizeof(message), "%s%s%s\n", date, text, ffmt);
(msglogp->msg_displayFunc) (msgtype, message);
} else {
fprintf(msglogp->msg_fd, "%s%s%s%s%s\n", color_s, date, text, ffmt,
color_e);
fflush(msglogp->msg_fd);
}
app_free(ffmt);
}

214
lib/msglog.h Normal file
View File

@ -0,0 +1,214 @@
#ifndef MSG_LOG_H
#define MSG_LOG_H
#include <stdio.h>
#include <stdlib.h>
/*
* gettext support
* msglog.h must follow config.h
*/
#ifdef ENABLE_NLS
#include <libintl.h>
#else
#define gettext(msgid) (msgid)
#define textdomain(domain)
#define bindtextdomain(domain, dir)
#endif
#define _(msgid) gettext (msgid)
#define gettext_noop(msgid) msgid
#define N_(msgid) gettext_noop (msgid)
/*
* DBG_0 is for msg_dbg
* msg_dbgl and msg_dumpl share the same dbg_msk
*/
enum _debugLevelInfo {
DBG_0 = (1 << 0),
DBG_1 = (1 << 1),
DBG_2 = (1 << 2),
DBG_3 = (1 << 3),
DBG_4 = (1 << 4),
DBG_5 = (1 << 5),
DBG_6 = (1 << 6),
DBG_7 = (1 << 7),
DBG_8 = (1 << 8), /* sockcon */
DBG_9 = (1 << 9),
DBG_10 = (1 << 10),
DBG_11 = (1 << 11),
DBG_12 = (1 << 12),
DBG_13 = (1 << 13),
DBG_14 = (1 << 14), /* message dump */
DBG_15 = (1 << 15), /* lex */
DBG_16 = (1 << 16),
DBG_17 = (1 << 17),
DBG_18 = (1 << 18),
DBG_19 = (1 << 19),
DBG_20 = (1 << 20),
DBG_21 = (1 << 21),
DBG_22 = (1 << 22),
DBG_23 = (1 << 23),
DBG_24 = (1 << 24),
DBG_25 = (1 << 25),
DBG_26 = (1 << 26),
DBG_27 = (1 << 27),
DBG_28 = (1 << 28),
DBG_29 = (1 << 29),
DBG_30 = (1 << 30),
/* DBG_31 = (1 << 31), is not an integer constant expression */
};
typedef int (*MsgFunc) (int type, const char *s); /* display func proto */
typedef struct _MsgLogData MsgLogData;
/* struct _MsgLogData modved to msglog.c */
/*
* external variables should be declared in main as global !
*/
extern int prog_debug;
extern MsgLogData *msglogp; /* global pointeur to MsgLogData in main */
/*
* macros used to print messages
* msg_dbg : print a debug message normally used in development
* msg_info : print an informationnal message
* msg_warning : print a warning message
* msg_error : print a error message. Let the programmer to decide
* msg_fatal : print a error message and exit
*
*/
/*
* Same macros with selective level or bit mask for debug
* msg_dbgl : print a debug message normally used in development
* a bit mask can be allocated to a part of the program.
* msg_infol : print an informatonnal message
* msg_warningl : print a warning message
* msg_errorl : print a error message. Let the programmer to decide
*
*/
enum _msg_fmt_info {
MSG_F_DATE = (1 << 0),
MSG_F_PROG = (1 << 1),
MSG_F_TYPE = (1 << 2),
MSG_F_FILE = (1 << 3),
MSG_F_FUNC = (1 << 4),
MSG_F_FOLD = (1 << 5),
MSG_F_COLOR = (1 << 6),
MSG_F_SIGNAL = (1 << 7), /* signal exit to parent */
MSG_F_OVERWRITE = (1 << 8), /* overwrite log file, default is append */
MSG_F_NO_DATE = MSG_F_PROG | MSG_F_TYPE | MSG_F_FILE | MSG_F_FUNC,
MSG_F_ALL =
MSG_F_DATE | MSG_F_PROG | MSG_F_TYPE | MSG_F_FILE | MSG_F_FUNC,
};
enum _msg_type_info {
MSG_T_DEBUG = 0,
MSG_T_INFO,
MSG_T_WARNING,
MSG_T_ERROR,
MSG_T_FATAL,
};
#ifdef MSG_DEBUG
#define msg_dbgl(msk, ...) \
if ( prog_debug ) { \
private_message( msk, MSG_T_DEBUG, __func__, __FILE__, __LINE__, __VA_ARGS__) ;\
}
#define msg_dbg(...) \
if ( prog_debug ) { \
private_message( 1, MSG_T_DEBUG, __func__, __FILE__, __LINE__, __VA_ARGS__) ;\
}
#define msg_set_dbg_msk(msk) \
private_msg_set_dbg_msk(msk);
#define msg_get_dbg_msk() \
(private_msg_get_dbg_msk())
#define msg_set_dbg_msk_str(str) \
private_msg_set_dbg_msk_str(str);
#define msg_get_dbg_msk_str(str) \
private_msg_get_dbg_msk_str(str);
#else
#define msg_dbgl(msk, ...)
#define msg_dbg(...)
#define msg_set_dbg_msk(msk)
#define msg_set_dbg_msk_str(str)
#define msg_get_dbg_msk_str(str)
#define msg_get_dbg_msk() (0)
#endif
#ifdef MSG_DUMP
#define msg_dump(buf, len, start, fd, ...) \
private_msg_dump(1, buf, len, start, fd, __VA_ARGS__) ;
#define msg_dumpl(msk, buf, len, start, fd, ...) \
private_msg_dump(msk, buf, len, start, fd, __VA_ARGS__) ;
#else
#define msg_dump(buf, len, start, fd, ...)
#define msg_dumpl(msk, buf, len, start, fd, ...)
#endif
#define msg_info(...) \
private_message(1, MSG_T_INFO, __func__, __FILE__, __LINE__, __VA_ARGS__)
#define msg_infol(level, ...) \
private_message(level, MSG_T_INFO, __func__, __FILE__, __LINE__, __VA_ARGS__)
#define msg_warning(...) \
private_message(1, MSG_T_WARNING, __func__, __FILE__, __LINE__, __VA_ARGS__)
#define msg_warningl(level, ...) \
private_message(level, MSG_T_WARNING, __func__, __FILE__, __LINE__, __VA_ARGS__)
#define msg_error(...) \
private_message(1, MSG_T_ERROR, __func__, __FILE__, __LINE__, __VA_ARGS__)
#define msg_errorl(level, ...) \
private_message(level, MSG_T_ERROR, __func__, __FILE__, __LINE__, __VA_ARGS__)
/*
* exit(1) is here to avoid a compiler message when no return after a
* msg_fatal. Exit will call msg_atexit.
*/
#define msg_fatal(...) \
{ private_message(0, MSG_T_FATAL, __func__, __FILE__, __LINE__, __VA_ARGS__ ); \
exit(1);}
void private_msg_set_dbg_msk(int msk);
int private_msg_get_dbg_msk(void);
unsigned int private_msg_set_dbg_msk_str(char *p);
void private_msg_get_dbg_msk_str(char *p);
void private_msg_dump(int level, char *buf, int len, int start, FILE *fd,
char *fmt, ... );
void private_message(int level, int msgtype, const char *func,
char *file, int line, char *fmt, ...);
void msg_initlog(char *name, int flags, char *filename,
MsgFunc displayFunc);
void msg_set_func(MsgFunc displayFunc);
void msg_set_flags(int flags);
int msg_get_level(void);
void msg_set_level(int level);
unsigned int private_msg_set_dbg_msk_str(char *str);
FILE *msg_openlog(char *filename, char *mode);
FILE *msg_get_msg_fd(void);
void msg_set_dbg_fd(FILE * msg_fd );
void msg_closelog(void);
void msg_atexit(void);
void msg_set_facility(int facility);
int msg_get_facility(void);
void msg_set_logger_is_open(int is_open);
int msg_get_logger_is_open(void);
extern const char *msg_day_of_week[];
extern const char *msg_month_of_year[];
#endif /* MSG_LOG_H */

Some files were not shown because too many files have changed in this diff Show More