Compare commits

..

721 Commits

Author SHA1 Message Date
Bryan Petty
5b9000cd44 This commit was manufactured by cvs2svn to create tag 'OLD_WXLIST'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/OLD_WXLIST@735 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-12 22:11:40 +00:00
Robert Roebling
8fdca65cf2 Removed warnings
Added GetCount() to wxList and wxDaynArray


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@734 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-12 22:11:40 +00:00
Robert Roebling
84efdbf195 Next try at removing the dancing sliders
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@733 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-12 20:38:55 +00:00
Julian Smart
cfb88c5569 Added sashtest GTK makefiles (crashing bug to be solved); added typetest sample
with simple wxVariant test; changed wxICON macro and used it in minimal.cpp
to avoid #ifdefing.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@732 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-12 17:33:59 +00:00
Julian Smart
8cb50e4b46 Added variant.h/cpp; changed variable names in object.h; added some functions
to wxStringList; added wxTrue and wxFalse to supress some warnings; some bugs fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@731 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-12 17:31:48 +00:00
Julian Smart
341287bf49 Added variant.h/cpp; changed variable names in object.h; added some
functions to wxStringList; some bugs fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@730 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-12 17:29:57 +00:00
Robert Roebling
cb43b372fb Changed instal path for setup.h
changed socket stream inheritance to virtual
  removed a few more warnings from the samples
  corrected thread habdling in configure.in
  removed dancing sliders from scrollbars
  corrected notebook send event bug and added it
   the controls sample


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@729 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-12 17:18:12 +00:00
Robert Roebling
e55ad60e19 Updates to memcheck
Corrected and beautified memory (output)
  Fixed a few memory leaks
  Fixed resizing in in wxRadioBox
  Added many wxFAIL and wxASSERT
  Corrected other wxFAIL (removed from ..::Ok())
  Added wxBrush::Set..() functions
  Added CopyOnWrite support in GDI objects (Unshare)
  Disabled all occurences of WXDEBUG_NEW
  made clean, recompiled with mem_chcking on


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@728 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-11 09:05:26 +00:00
Robin Dunn
384b4373c7 Added #include to get FIONBIO on Solaris 2.6
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@727 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-11 01:28:41 +00:00
Guilhem Lavaux
b7db6f0b6d * Bug fix in wxFilter*Stream
* corrected the URL parser


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@726 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-10 17:22:20 +00:00
Julian Smart
0c32066b58 Eliminated some warnings under Windows; wxGetHomeDir problem in wxFile;
eliminated memory leak report by making class table dynamically allocated/freed;
tidied up names in wxClassInfo.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@725 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-10 11:41:14 +00:00
Robert Roebling
d8c838755a Tried to find a non-existing bug in the cursor-code
Removed Karsten's third Makefile.in attempt


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@724 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-09 09:57:24 +00:00
Karsten Ballüder
ab346a0c3f fixed typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@723 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-09 09:06:30 +00:00
Karsten Ballüder
337d7956cc removed wxsetup.h from libdir
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@722 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-09 09:00:54 +00:00
Karsten Ballüder
5a2055fa9b removed __WXMSW__ define
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@721 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-09 08:49:33 +00:00
Unknown (HB)
cb17fe41ee DEC Alpha does not need -ldl, therefore check for it.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@720 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-09 07:57:51 +00:00
Julian Smart
27529614c2 Additional makefiles; changes for compilation with BC++ and GnuWin32
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@719 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-08 22:27:12 +00:00
Julian Smart
f395c809b5 Added Latex style file
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@718 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-08 22:24:52 +00:00
Karsten Ballüder
a665764c39 now installs properly
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@717 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-08 19:09:50 +00:00
Robert Roebling
c058d77142 It's now possible to drag a listbox filled with entries
Removed #ifdef 0 from resource.cpp around reading code
    for wxRadioBox
  #ifdeffed a Refresh call that causes DialogEd to dump
   code in wxGTK when deleting an item
  Suppressed some warnings
  Readded socket stuffto gtk.inc


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@716 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-08 18:21:16 +00:00
Guilhem Lavaux
c740f49634 * some C++ness correction in wxStream.
* added support for DLL on Borland32
* fixed export bugs
* fixed a portability problem in socket.cpp
* added a missing function in utilsexc.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@715 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-08 17:19:16 +00:00
Julian Smart
6f5f3ca0fe Updated OGL documentation and tidied up some code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@714 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-08 14:38:35 +00:00
Robert Roebling
d6d1892b89 Rewrote wxRadioBox (recompile)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@713 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-08 00:27:29 +00:00
Robert Roebling
6987a6c3d0 I debug DialogEd for five hours and then Karsten
tells me that CaptureMouse is broken. Doh.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@712 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 22:38:10 +00:00
Robert Roebling
61607c3641 Changed DnD MIME file type for file DnD. Understood?
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@711 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 22:04:40 +00:00
Robert Roebling
d84eb08384 After resolving all conflicts that came down the
telephone line: DialogEd is ready for general
  consumption now.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@710 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 22:01:55 +00:00
Julian Smart
b8c631bb29 Fixed wxCheckBox on wxGTK (SetLabel called before widget creation),
wxListBox::GetSelection returning -1 now doesn't assert; wxProp improvements
for wxGTK; parser.y includes <io.h> under VC++ to eliminate 'read' warning


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@709 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 21:53:34 +00:00
Robert Roebling
e22036dc39 Suppress warnings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@708 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 18:04:27 +00:00
Robert Roebling
a60c99e6a9 Added USE_CONFIG
A little more DnD work
  wxDialog now inherits from wxPanel (recompile)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@707 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 17:23:29 +00:00
Vadim Zeitlin
c9dac6640f ok, now it _does_ compile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@706 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 15:38:51 +00:00
Vadim Zeitlin
774e843c03 cvs incorrectly merged my last change somehow (there a\were 2
SetActiveTargets), corrected.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@705 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 15:32:32 +00:00
Robert Roebling
83058c584f wxProp now intercepts EVT_TEXT_ENTER instead of EVT_TEXT
Added Checkbox::SetLabel


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@704 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 14:44:38 +00:00
Robert Roebling
b4071e913e Much more aggressive for intercepting events and
(not) redirecting them to wxWindows or GTK
    All widgets work now in DialogEd


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@703 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 12:29:07 +00:00
Julian Smart
a6d7030871 Added wxSashWindow, wxSashLayoutWindow, wxLayoutAlgorithm classes and sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@702 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 09:27:34 +00:00
Robert Roebling
97b3455a6d Tries unsuccesfully to cure a few more problems
for DialogEd
  wxFileSelector now sets the title
  Todo is quite complete now


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@701 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 09:17:58 +00:00
Vadim Zeitlin
8ed57d9312 some clean up of the code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@700 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 09:01:35 +00:00
Vadim Zeitlin
88db66e373 tab traversal now works better (using uninitialized variable was a bad idea :-)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@699 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 08:59:10 +00:00
Vadim Zeitlin
3e64d4e1e5 added wxLogSysError() in wxExecute() if the command fails
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@698 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 08:57:14 +00:00
Vadim Zeitlin
743e0a66f6 wxGetHomeDir() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@697 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 08:56:29 +00:00
Vadim Zeitlin
040f0110fc wxRegConfig now works again
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@696 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 08:55:28 +00:00
Vadim Zeitlin
fd2daa68f4 the notebook now has wxTAB_TRAVERSAL style
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@695 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 08:54:52 +00:00
Vadim Zeitlin
27fda0b6a1 added support for right aligned labels (wxALIGN_RIGT maps to BS_LEFTTEXT)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@694 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 08:53:49 +00:00
Vadim Zeitlin
252eb8fd71 "const" added to wxAceelTable ctor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@693 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 08:52:10 +00:00
Vadim Zeitlin
a7ee134340 wxRegConfig now works correctly again
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@692 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 08:48:06 +00:00
Vadim Zeitlin
10310d8322 "const" added to wxAccelTable ctor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@691 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 08:46:57 +00:00
Vadim Zeitlin
7c3c5eccb2 const char *wxGetHomeDir(wxString*) added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@690 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 08:45:40 +00:00
Vadim Zeitlin
4c84fa8d91 minor change (using wxLogNull no doesn't flush the old messages)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@689 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 08:44:46 +00:00
Julian Smart
fcc6dddd1f Made wxSocket compile using makefiles; #ifdefed out <<, >> operators in stream.cpp
for USE_SERIALL; included io.h for VC++ in socket.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@688 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-07 07:58:29 +00:00
Robert Roebling
d3904ceb9a Fillid in many more missing functions (such as Enable())
There are still things to fix when compiling sockets ..


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@687 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-06 20:27:21 +00:00
Robert Roebling
13439807d3 wxMenu doesn't anylonger call the callback if the
event is only a highlight event (more similar to wxMSW)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@686 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-06 18:47:46 +00:00
Robert Roebling
3f659fd6b1 SetFont() the second
#ifdefed SetFont() in Statusbars destructor
  wxRadioBox setsize corrected (Still only simple layout)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@685 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-06 18:34:18 +00:00
Guilhem Lavaux
f4ada56822 * Added wxsocket lib and sample (I hope I don't forget some file)
* Updated some wx data and makefiles
* Updates on wxStream (reorganization)
 makefile for Windows will nearly follow
 wxSocket should work on wxGTK (I've tested it)

* IPC over Network is included


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@684 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-06 18:28:00 +00:00
Julian Smart
560b92f577 Commented out Robert's SetFont change for now; changed menu handling slightly
in Dialog Editor; use wxConfig now in Dialog Editor


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@683 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-06 16:55:57 +00:00
Vadim Zeitlin
acb62b847b GetItem() now works (it was completely broken)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@682 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-06 15:57:43 +00:00
Julian Smart
3bdd13763c Removed bitmap.cpp, bitmap.h from OGL
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@681 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-06 14:57:36 +00:00
Julian Smart
72212c2879 Various changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@680 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-06 14:52:16 +00:00
Julian Smart
3972fb4919 Added some more class docs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@679 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-06 14:43:36 +00:00
Julian Smart
68278f98be Renamed bitmap.cpp to bmpshape.cpp to aid debugging
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@678 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-06 14:35:53 +00:00
Julian Smart
2e5ed787e9 OGL improvements
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@677 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-06 14:32:25 +00:00
Robert Roebling
868a28262c Added SetFont to most controls and controls sample
(recompile)
  Added tiny bit of documentation to window.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@676 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-06 13:46:50 +00:00
Julian Smart
1573d8ed98 Removed some bugs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@675 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-05 22:36:13 +00:00
Robert Roebling
e1e955e14c Fixed two small things in wxListCtrl
Removed SetSizeHint from wxDialog (recompile)
  Removed dialog modal flag
  Code clean up here and there


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@674 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-05 18:26:06 +00:00
Julian Smart
42871d3819 Fixed Get...String functions.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@673 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-05 16:45:26 +00:00
Robert Roebling
11bc0805de Shared libs now get installed correctly on Linux.
Fixed a compile bug on bitmap.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@672 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-05 16:37:48 +00:00
Robert Roebling
f3cb6592e9 Makefile next attempt
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@671 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-05 13:59:23 +00:00
Robert Roebling
5b011451bd Fixed a small wxDialog thing
Fixed transparency in wxNotebook
  Turned the controls sample in way the coolest of all smaples


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@670 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-05 08:37:40 +00:00
Guilhem Lavaux
25c70b07e6 * wxFileInputStream and wxFileOutputStream doesn't inherit anymore from wxFile.
* The destructor of wxFile isn't anymore virtual.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@669 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-04 17:32:11 +00:00
Vadim Zeitlin
f05df5a85a friends declarations removed, GetBitmap/Pixmap functions made public
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@668 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-04 12:45:34 +00:00
Robert Roebling
94a0f3ce22 Removed remaining file.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@667 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-04 12:45:00 +00:00
Robert Roebling
66c135f346 Corrected wxWindow::GetExtent
s econd attempt at accelerators (mdi sample works)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@666 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-04 12:43:41 +00:00
Vadim Zeitlin
741fd2033e image in the notebook is now at the left of the label (as in wxMSW), not at
its right


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@665 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-04 11:56:53 +00:00
Julian Smart
dd7f2a6c52 Added friend wxNotebook
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@664 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-04 11:25:34 +00:00
Julian Smart
db5d183b03 Fixed compile error in gtk/dc.cpp (L.88); also menu problem in msw/mdi.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@663 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-04 11:24:30 +00:00
Robert Roebling
cf7a7e133b It's possible now to save to a PNG. OK, I still
have performance problems, but it's a start.
  Updated install.txt.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@662 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 21:46:47 +00:00
Vadim Zeitlin
24d20a8f73 wxNotebook now supports the item images (except for the mask problem!)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@661 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 16:59:51 +00:00
Vadim Zeitlin
2cb21a4540 the notebook now has the icons
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@660 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 16:59:00 +00:00
Robert Roebling
c487af252d Some more Makefile stuff (someone else did that partially)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@659 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 16:26:04 +00:00
Unknown (AN)
a83ffecb67 fixed the install/unix references -Markus
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@657 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 15:38:49 +00:00
Unknown (AN)
9dbd8eb8f1 fixed the install/unix references -Markus
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@656 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 15:27:50 +00:00
Vadim Zeitlin
b3031762e8 wxFileConfig ctor now (again) uses the files in the correct locations if the
file names are not specified -- that's what Get{Local|Global}FileName() are
for, Julian!


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@655 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 15:23:04 +00:00
Robert Roebling
c98f04213e make install
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@654 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 13:58:56 +00:00
Vadim Zeitlin
e96ddf25ad replaced wxEmptyString with "" because it's defined in gdicmn.h (sic!) which,
of course, is not always included before confbase.h...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@652 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 12:03:22 +00:00
Karsten Ballüder
9a648dc916 Removed files as requested by Robert.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@651 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 11:46:15 +00:00
Julian Smart
7b46ecac64 Dang, can't remember what I changed now
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@650 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 07:34:26 +00:00
Robert Roebling
bcf1fa6bb4 Added wxAccelerators (sort of)
Moved configure (once again)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@649 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-02 22:23:57 +00:00
Robert Roebling
8429bec1e8 New configure
wxRegionIterator
  New IsEposed functions  (-> recompile)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@648 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-02 17:53:48 +00:00
Robert Roebling
2f2aa6287b Fixed event handling for DialogEd
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@647 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-02 12:15:35 +00:00
Guilhem Lavaux
f4a8c29f7a * wxCreateDynamicObject() uses an hashtable now
* wxClassInfo::first = NULL after the hashtable is initialized
* dynlib has been simplified.
* Some fix in the serialization core and in wxObject::StoreObject()/LoadObject()
* Updates in utils/serialize/sermain.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@645 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-01 17:17:05 +00:00
Robert Roebling
2f6407b947 Small fixes to wxChoice, wxComboBox and wxListBox
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@644 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-01 15:41:45 +00:00
Robert Roebling
edaa81ae5d Added Set/GetItemState, GetNextItem.. to wxTreeCtrl
Fixed functions name mismatch SetSizeHint in window and frame
  Added support for non-european fonts and X extension using
   gtk_set_locale()
  Added compile fixes for FreeBSD and folks


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@643 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-01 14:29:21 +00:00
Robert Roebling
30f82ea416 Fixed a few compile things
Fixed wxListCtrl::SetItemState bug
  Tried to hunt down a bug in menu, which
    disappeared after recompiling


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@642 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-01 10:26:14 +00:00
Julian Smart
34da0970a0 Fixed MSW printing, tidied up member variable names
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@641 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-28 11:00:50 +00:00
Robin Dunn
451871970b Added some typecasts that the compiler complained about not having
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@640 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 23:32:09 +00:00
Robin Dunn
0d6f9504ae Some chicken-and-egg problems solved for wxPython on wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@639 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 21:59:51 +00:00
Julian Smart
052ae0e568 Updated wxConfig documentation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@638 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 21:10:49 +00:00
Julian Smart
3e0f922848 Added some files I forgot about
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@637 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 21:08:39 +00:00
Julian Smart
1824493628 wxConfig changes to be more logical.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@636 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 21:06:02 +00:00
Julian Smart
73fb82f3f3 wxUpdateUIEvent derives from wxCommandEvent now
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@635 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 07:47:25 +00:00
Robin Dunn
21f4bf4568 - more tweaks
- have discovered some problems but not yet discovered solutions...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@634 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 00:01:17 +00:00
Unknown (RO)
5104949d8a Missing typecast from return.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@633 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-25 22:24:50 +00:00
Julian Smart
0d8d91a98f HKEY -> WXHKEY, wxScrolledWindow::SetScale added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@632 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-24 19:13:34 +00:00
Julian Smart
fd6c844b17 HKEY -> WXHKEY; wxScrolledWindow::SetScale added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@631 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-24 19:11:11 +00:00
Guilhem Lavaux
885ee23543 * wxStream fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@630 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-24 17:22:31 +00:00
Vadim Zeitlin
4128681253 minor fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@629 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 22:21:47 +00:00
Karsten Ballüder
c47711479e added (de)select all
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@628 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 20:06:24 +00:00
Guilhem Lavaux
6f34921d93 * Fixed two memory leaks.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@627 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 14:06:39 +00:00
Julian Smart
d8260b2f57 defs.h corrected (syntax error in wxDELETEA). More unnecessary files removed.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@626 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 10:30:17 +00:00
Guilhem Lavaux
1d44aaf824 * New function wxObjectInputStream::Recall()
* Fixes in object serializer,dynlib,LoadObject/StoreObject
* Updates for serialization.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@625 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 09:23:27 +00:00
Unknown (RO)
def172b2af Missing \ before _
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@624 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 04:50:00 +00:00
Unknown (RO)
c67daf8777 General tidy-up (mainly typecasts) to allow the use of the SGI native
compilers (tested on Irix 6.5 with -mips3 -n32).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@623 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 03:22:56 +00:00
Vadim Zeitlin
cb6780ff01 calling insert("") would provoke an assert - now it's just ignored
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@622 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 20:44:07 +00:00
Vadim Zeitlin
1880e45211 bug with checking the first character of possible empty string corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@621 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 20:34:00 +00:00
Robin Dunn
f57d793249 some tweaks for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@620 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 19:51:18 +00:00
Julian Smart
b6a158b04e Removed redundant makefiles and AIAI icons. Changed dynamic sample source name from
minimal.cpp to dynamic.cpp.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@619 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 19:46:35 +00:00
Julian Smart
8fed68d816 Added config resource file and VC++ makefile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@618 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 19:07:11 +00:00
Julian Smart
26ac5fadea Removed child frame CreateStatusBar from MDI sample; renamed config.h to confbase.h;
config.h now includes appropriate files


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@617 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 16:41:51 +00:00
Julian Smart
42cfaf8cd4 OGL improvements
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@616 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 16:31:11 +00:00
Vadim Zeitlin
32c66ea22e spurious error messages from wxRegKey::HasValue() suppressed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@615 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-21 20:48:45 +00:00
Vadim Zeitlin
cd91632c36 radiobox had some strange ideas about vertical and horizontal directions
(in fact, wxRA_VERTICAL and HORIZONTAL were inverted). corrected.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@614 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-21 20:47:49 +00:00
Julian Smart
567da5c600 Accelerators now work for wxDialog; wxToolBarSimple fixed when dragging out of
the toolbar


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@613 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-21 17:47:19 +00:00
Vadim Zeitlin
257f1d9b85 wxStaticBitmaps were created invisible - corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@612 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-20 22:47:39 +00:00
Guilhem Lavaux
8d43638db1 * Some new feature in wxObject*Stream (objects aren't duplicated)
* Added SetBackgroundBrush in wxGridCell
* New classes/fixes in wxSerial


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@611 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 18:33:19 +00:00
Julian Smart
4c444f19cf GDI double-deletion fix, wxBitmap depth bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@610 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 15:45:05 +00:00
Guilhem Lavaux
857f3be5f1 * Bug fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@609 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 07:42:27 +00:00
Robin Dunn
8f89cfc11e A few tweaks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@608 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 00:38:23 +00:00
Robin Dunn
c8d07da7a6 Placeholder
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@607 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 00:35:04 +00:00
Robin Dunn
9d358552fc new build structure
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@606 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 00:10:57 +00:00
Robin Dunn
70551f4702 GTK version of the SWIG-generated files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@605 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 00:10:03 +00:00
Robin Dunn
e181bb6f72 placeholder
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@604 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 00:05:43 +00:00
Robin Dunn
b62bdb487f New build directory structure
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@603 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 21:55:10 +00:00
Robin Dunn
13dfc24333 ifdef out some wxGTK specific code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 21:54:12 +00:00
Robin Dunn
8ab979d738 MSW version of the SWIG-generated files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@601 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 21:52:31 +00:00
Robin Dunn
f42c777d79 moving the SWIG-generated files to toolkit specific subdirectories
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@600 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 21:50:11 +00:00
Vadim Zeitlin
3cda63537e uint -> size_t change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@599 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 20:15:51 +00:00
Robin Dunn
0cf2cb360f Added wxTheApp = this; to wxApp::wxApp for wxPython
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@598 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 19:57:02 +00:00
Denis Pershin
4540e33bb6 Second try
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@597 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 19:54:06 +00:00
Robin Dunn
fb5e0af035 more wxGTK compatibility things.
It builds now but there are serious runtime problems...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@596 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 19:48:20 +00:00
Robin Dunn
eaf3cf57ed a few tweaks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@595 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 19:45:09 +00:00
Denis Pershin
befe54c6ca Seems it works reasonably stable...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@594 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 19:25:46 +00:00
Robert Roebling
314055fa8d Added TOOL_ENTER command. Now wxGTK and wxMSW misbehave
equally on that matter.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@593 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 17:41:55 +00:00
Guilhem Lavaux
c2dd8380ba * wxThread: new functions: wxThread::Pause/Resume, wxThread::GetThreadFromID
* Updates and new objects in utils/serialize
* wxLayout*_Serialize are friends of wxLayout* (so I can access to the
internal fields)
* wxMenu (GTK):  SetTitle/GetTitle (basic implementation)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@592 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 17:22:15 +00:00
Vadim Zeitlin
c86f1403c3 globally renamed uint to size_t. This has _not_ been checked under Windows,
although I changed msw files also, so please wait until this evening if you
want to be sure that it compiles. This change should fix 64 bit compilation
problems, but it would be nice to test it...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@591 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 15:36:12 +00:00
Robert Roebling
77ff2d2639 Next attempt at dynlib.cpp
Disabled ImLib's cashing
  Confirmed Vadim's changes to wxListCtrl :-)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@590 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 15:28:46 +00:00
Vadim Zeitlin
39570cd479 corrected wxListCtrl compilation problems
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@589 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 14:59:26 +00:00
Julian Smart
b8de493fbd Various .tex files updated. .bmp files were corrupted, recomitting.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@588 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 14:54:21 +00:00
Karsten Ballüder
cb38104ec7 reordered headers to compile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@587 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 12:37:53 +00:00
Karsten Ballüder
406291e530 #ifdef'd out some parts for non-supported systems.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@586 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 12:30:40 +00:00
Karsten Ballüder
53e65b8a50 Added configure to cvs - there are systems without autoconf!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@585 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 12:18:37 +00:00
Robert Roebling
94bd2eded1 Added the static text patch for multiline text
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@584 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 07:09:00 +00:00
Vadim Zeitlin
c4afa2cbfd added wxConfigBase documentation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@583 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 22:45:47 +00:00
Vadim Zeitlin
c2b1eaf8ca minor change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@582 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 22:22:29 +00:00
Vadim Zeitlin
72cb6ff3b3 a micro bug (but which was enough to break regtest sample) corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@581 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 22:19:17 +00:00
Vadim Zeitlin
af9e71a8b4 replaced another printf() with wxLogDebug()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@580 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 22:18:21 +00:00
Robin Dunn
f9d855de75 Added missing declaration of wxIcon::operator =(const wxIcon &)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@579 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 21:35:03 +00:00
Robert Roebling
77e7a1dc48 Added IRIX compile fixes
Added functions that must be handed down
   from wxListCtrl to the main window


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@578 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 20:07:50 +00:00
Robin Dunn
652e7bb422 Removed an extra method definition
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@577 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 18:29:40 +00:00
Robin Dunn
324511ce07 Corrected the signature for wxFrame::Maximize
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@576 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 18:25:14 +00:00
Robin Dunn
cd0183ca31 Added wxWindow::Center
Corrected the signature for wxWindow::SetSizeHints


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@575 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 18:24:32 +00:00
Robert Roebling
ee7ee4698c Added in-place editiging in wxListCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@574 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 17:05:47 +00:00
Robert Roebling
b0d77f437c Added list ctrl sample. Looks better than what I thought...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@573 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 15:48:25 +00:00
Robert Roebling
52cbfcf009 Turned wxIcon inline constructors to real constructors
Removed warning from dcclient
  Added wxTheFontList->Add(this) somewhere in wxFont
  CleanUp() now printfs the number of members in
    wxTheBitmapList


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@572 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 14:29:53 +00:00
Julian Smart
e8c81745ea Got printing, toolbar samples compiling under Windows again
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@571 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 11:11:13 +00:00
Julian Smart
7a11869dde Changed floats to doubles in wxexpr.h; added a flag in accel.h (wxACCEL_NONE for
'no ctrl/alt/shift key')


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@570 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 09:39:39 +00:00
Julian Smart
12ed6eb56f Changed floats to doubles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@569 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 09:38:28 +00:00
Robert Roebling
9d3221abf1 GTK's toolbar class has no OnPaint
Added missing bitmap in mdi sample
  Added OpenGL support (I Get segv on
   my Debian/Mesa system, don't know why).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@568 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 09:16:28 +00:00
Vadim Zeitlin
d553992a3c 1) corrected bug in log.cpp which only affected wxGTK: some messages could
appear twice
2) tried to use gtk_widget_set_usize in wxFrame::SetSizeHints(), but it
   still doesn't work...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@567 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 21:02:14 +00:00
Robert Roebling
ff7b1510ea Added mising AddBitmapList in wxBitmap
Added missing deletion of wxFrame's toolbar
  Removed a few superfluous ; (sorry)
  Mentioned dmalloc in INSTALL


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 19:39:29 +00:00
Robert Roebling
11026f7b59 New scrolling for GTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@565 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 17:07:17 +00:00
Karsten Ballüder
82dc15db08 added one extra check for emptyness
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@564 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 11:28:39 +00:00
Julian Smart
f7387de542 Changed wxMenu::GetTitle to return a wxString.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@563 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 08:03:13 +00:00
Robin Dunn
714e6a9e26 More wxGTK work.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@562 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 04:31:11 +00:00
Robin Dunn
2d6dfbb778 updated email address
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@561 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 04:30:03 +00:00
Vadim Zeitlin
12e7bc479e Karsten's correction undone - this code is (was) correct!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@560 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 01:37:16 +00:00
Karsten Ballüder
76f53a0e39 Added configure option --with-dmalloc to use the dmalloc memory debugging library.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@559 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 23:52:16 +00:00
Vadim Zeitlin
1280032d6c '&' are removed from checkbox labels (all controls should call
wxControl::SetLabel and use m_label which contains the label without '&')


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@558 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 21:05:06 +00:00
Vadim Zeitlin
8f5f7c82d1 added default values for ax size arguments of SetSizeHints (for msw
compatibility)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@557 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 21:03:28 +00:00
Julian Smart
d0fff5cb11 Small changes after Robert's edits
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@556 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 20:10:16 +00:00
Robert Roebling
cd53f34118 Fixed my own Makefile bug
New INSTALL
  Fixed path in imrc


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@555 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 18:58:26 +00:00
Karsten Ballüder
2b5bd7fd87 fixed GetSelection() inversion bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@554 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 18:47:23 +00:00
Julian Smart
c2265822fe Added isosurf wxGLCanvas sample, cured OnPaint bug (missing wxPaintDC object)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@553 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 17:48:39 +00:00
Karsten Ballüder
6967fbf45b fixed a logical error (! isempty) instead of isempty
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@552 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 17:05:48 +00:00
Robert Roebling
a9c96bcce9 Added graying out of menus and buttons
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@551 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 15:59:43 +00:00
Robert Roebling
d5c462fd20 DialogEd's missing icons.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@550 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 15:23:47 +00:00
Robert Roebling
b127f3011f DialogEd now compiles, links and runs under wxGTK
I didn't say it worked, eh.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 14:45:04 +00:00
Denis Pershin
8b21b87fe3 DP: Just came back from 3 days fishing and found that forget to commit some
changes.

GetBitmap added


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@548 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 14:42:09 +00:00
Robert Roebling
8656024d15 Added wxPropList library
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@547 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 13:20:52 +00:00
Julian Smart
6a1120ad4c Added GLCanvas library (Win only at present).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@546 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 12:43:34 +00:00
Julian Smart
c856c750c0 2 GnuWin32 compile bugs fixed, incl. printf bug in prntdlgg that sent GnuWin32
into an endless loop


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@545 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 12:30:42 +00:00
Robert Roebling
8d71b5552e Resource sample works now, apart from
wxRadioBox, which is #ifdef 0 in
   resource.cpp
  Fixed tiny thing in resource.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@544 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 12:06:45 +00:00
Robert Roebling
c33c405087 See last changelog
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@543 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 10:52:09 +00:00
Robert Roebling
942be9a749 Makefile fixes
Added resource sample (segvs)
  Added functions to menu, mdi, frame, dialog, window
    that were missing e.g. in wxPython


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@542 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 10:47:47 +00:00
Robin Dunn
03e9bead8a - Moved the header in the .i files out of the code that gets put into
the .cpp files.  It caused CVS conflicts because of the RCS ID being
different each time.

- A few minor fixes.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@541 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 07:36:54 +00:00
Julian Smart
34138703c3 Changes mostly as a result of __WXSTUBS__ compilation. The stubs code now
compiles under Windows with VC++. Also OGL enhancements espec. wxDrawnShape.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@540 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 00:23:28 +00:00
Robin Dunn
853b255a6b Beginings of wxGTK compatibility
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@539 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 23:36:49 +00:00
Robert Roebling
903f689bf7 Added validation support
Fixed a few minor things in wxGrid
  Fixed bug in SetClippingregion
  Disabled SetDefault again
  Fixed bug in AddChild, SetSize et al.
  Add PROCESS_ENTER and wxEVT_TEXT_CHANGE
  Renamed OnOk -> OnOK
  Added a few compatibilty functions
  Added code to make iinterception
    of events possible and work


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@538 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 22:53:21 +00:00
Vadim Zeitlin
470b7da353 wxLogWindoe changed again: now takes a parent frame in ctor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@537 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 21:49:27 +00:00
Vadim Zeitlin
1845330624 a small GUI glitch corrected (if a frame with child frames was resized, it
was lowered below it's children)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@536 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 21:47:49 +00:00
Vadim Zeitlin
568cb54317 WM_MOVE processing added (wxMoveEvent generated)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@535 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 21:41:53 +00:00
Unknown (AN)
0059a10283 -somewhat more elegant method, supporting the src subdir (-Markus)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@534 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 20:12:00 +00:00
Karsten Ballüder
64a1451536 added option to hide page controls
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@533 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 11:20:00 +00:00
Julian Smart
163f0dbef0 wxToolBarBase -> wxToolBar
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 11:15:17 +00:00
Karsten Ballüder
76810b8c97 printing works, page number controls are hidden
portrait/landscape doesn't work, pages are printed wrong


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@531 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 11:02:39 +00:00
Robert Roebling
6de97a3b94 Added wxRadioButton (not tested)
Added wxValidator to constructros
  Added resource.cpp
  Added parser stuff
  Added the coolest Makefile.in
  Added callbacks to Menu
  Changed parser.y to include lexer.c for wxGTK
    (Is that right?)
  Can't remeber havning changed the printing stuff.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@530 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 10:07:38 +00:00
Karsten Ballüder
3ebece2bda added printing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@529 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 08:33:33 +00:00
Robin Dunn
3b8b23873a made pre-compiling the python files optional
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@528 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 03:34:23 +00:00
Robin Dunn
2370fac3f6 removed some definitions that got removed from defs.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@527 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 03:16:39 +00:00
Unknown (AN)
e6886957b4 -Debian glibc2 system is 'linux-gnu', not 'Linux';updated .cvsignore's -Markus
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@526 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-13 11:45:43 +00:00
Julian Smart
14b72bf5a6 Attempting to check in this wretched cursor again. Also added SetAcceleratorTable
to wxWindow, GnuWin32 fix in registry.h.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@525 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-13 10:19:16 +00:00
Julian Smart
088a95f5ff Fixed compile bug in dropsrc.cpp (constr. arg); GnuWin32 fix in registry.cpp;
combobox event fix; moved SetAcceleratorTable down to window.h/cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@524 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-13 10:16:03 +00:00
Karsten Ballüder
5e0394ae9b integrated my latest changes and Vadim's fixes on top of that
Compiles, but works?


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@523 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-13 10:03:26 +00:00
Robert Roebling
fc008f2592 Added ToogleTool from Markus
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@522 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-13 09:11:23 +00:00
Vadim Zeitlin
564b260950 wxWindow::MSWOnHScroll changed to call the default handler if the message isn't
processed (earlier it wasn't called in some cases)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@521 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 22:44:51 +00:00
Vadim Zeitlin
93a19f178c stack overflow when clicking on the arrow in a notebook fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@520 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 22:42:01 +00:00
Vadim Zeitlin
42a91fcebc suppressed VC++ 5.0 bool to int conversion warning (when compiling with
USE_RESSOURCE_LOADING_IN_MSW only)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@519 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 22:41:02 +00:00
Vadim Zeitlin
338c2a71e9 one more minor wxLogWindow fix (I try to get it really right...)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@518 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 22:38:30 +00:00
Vadim Zeitlin
4b13e6aeb2 added a "wxWindow *" (unused) argument for wxGTK compatibility
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@517 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 22:37:20 +00:00
Vadim Zeitlin
6d9669450d explicit SetSelection/SetOldSelection methods added to wxNotebookEvent
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@516 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 22:36:21 +00:00
Robert Roebling
496080f0b0 Forgot this one.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@515 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 21:39:12 +00:00
Robert Roebling
86b29a6122 Added PushEventHandler, Pop...
Corrected spelling of SetEventhandler
  Fixed two bugs in wxGenericPrintDlg
  Tried in vain to make printing of icons work.
    It now prints black on black, mostly.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@514 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 21:24:51 +00:00
Vadim Zeitlin
16ced4a272 had to modify it (added one pixel...) to be able to commit: the file in the
repository was indeed corrupted (as noticed by Robin a couple of days ago)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@513 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 20:57:08 +00:00
Vadim Zeitlin
bb14db2d95 file d&d (re)enabled under Windows
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@512 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 20:30:23 +00:00
Karsten Ballüder
23b75a2db4 Looks like I've fixed the editing
bugs. Delete/Insert/Home/End/Ctrl-Delete all work as expected.
Cursor gets redrawn properly.
Scroll-to-cursor still missing.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@511 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 16:14:15 +00:00
Robert Roebling
362c669367 Added wxFrame::OnCreateStatusBar and ToolBar
Added wxWindow::Raise and Lower

  There isn't going to be wxFrame::SetToolBar.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@510 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 11:44:33 +00:00
Karsten Ballüder
01b2eeec59 replaced by stubs files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@509 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 09:16:21 +00:00
Karsten Ballüder
0acb94947f fixed mysterious mistakes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 08:50:25 +00:00
Karsten Ballüder
3908d01eab Cursor and insert/delete work much better now, code streamlined, still
a minor problem left.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@507 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 08:33:34 +00:00
Vadim Zeitlin
3b9261289f more minor changes to wxLogWindow
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@506 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 21:14:47 +00:00
Vadim Zeitlin
906373bf01 '\\' can be used to suppress special meaning in '%' and '$' in wxExpandEnvVars
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@505 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 21:12:06 +00:00
Vadim Zeitlin
d1427b7053 static wxFile::Access() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@504 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 21:04:48 +00:00
Vadim Zeitlin
d4a00e065b static wxFile::Access() added (access() isn't ANSI neither...)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@503 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 21:03:57 +00:00
Vadim Zeitlin
654c1d6b7b controls.cpp didn't compile - missing MyTextCtrl declaration added (and what
OnRightButton is supposed to do?)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@502 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 12:44:33 +00:00
Karsten Ballüder
cd063a90f5 deleted
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@501 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 11:53:55 +00:00
Karsten Ballüder
e149aaeb44 Added empty Raise() and Lower() methods for compatibilty.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@500 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 09:51:04 +00:00
Robin Dunn
d279310da9 Typo fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@499 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 23:23:05 +00:00
Robin Dunn
5796ed400c Since wxREADONLY has disappeared, I had to change to wxTE_READONLY
in order to compile.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@498 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 22:22:25 +00:00
Denis Pershin
e8cd8b1b12 Small modifications
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@497 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 19:57:59 +00:00
Denis Pershin
40413a5b70 DP: GetBitmap() added to wxImageList
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@496 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 18:09:07 +00:00
Denis Pershin
f4e325b3df DP: native wxTreeCtrl for GTK.
It *should* be buggy... Cause I do not know GTK...
But it works... I do not know why... Robert, please look at it...
I am not sure that it is ok...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@495 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 17:53:44 +00:00
Julian Smart
9c331ded69 Various Dialog Editor-related mods; Dlg Ed. getting usable now under MSW.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@494 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 13:48:12 +00:00
Julian Smart
983162bd54 Mod to allow hit-test on static to succeed.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@493 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 13:41:22 +00:00
Karsten Ballüder
7b3a00878c added correct coordinate handling
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@492 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 09:21:28 +00:00
Denis Pershin
f6d5397840 DP: Robert's mistake with incorrect var name corrected.
It even does not compile.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@491 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 19:42:11 +00:00
Robin Dunn
376781f78e I didn't mean for this to be in the repository...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@490 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 17:26:41 +00:00
Julian Smart
b823f5a145 Miscellaneous, mostly cosmetic changes. wxPen/wxFont/wxBrush altered so Set...
functions don't change shared objects.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@489 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 16:46:37 +00:00
Julian Smart
5e25ba908f Stub header changes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@488 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 16:31:10 +00:00
Julian Smart
93cf77c076 Added stubs .cpp files.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@487 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 16:27:07 +00:00
Robert Roebling
30dea05497 Added Pop-up menus.
Hunted down bug in dnd
  Changed widget, that wxWin connects to in certain
  case (in controls, where m_widget is not the connect
  widget, such as list control and text control)
  Compile fixes all over


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@486 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 13:06:25 +00:00
Robin Dunn
7bf854050f Initial version
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@485 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 08:31:08 +00:00
Robin Dunn
b6a69abc7d Made NOPCH overridable
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@484 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 07:15:59 +00:00
Vadim Zeitlin
e17e4f282f wxWarning replaced with wxLogWarning (to solve the compilation problems due
to wxWarning's const incorrectness)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@483 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 22:14:17 +00:00
Vadim Zeitlin
b039c367cd WXFARPROC prototyped as `typedef int (__stdcall *WXFARPROC)()' (does Borland
understand __stdcall?) to make the program compile with VC++


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@482 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 22:08:04 +00:00
Vadim Zeitlin
f83528074b SetBackgroundColour() call is now done after the window is created, not before
(in which case ListCtrl_SetBkColor fails because it's called with HWND = 0)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@481 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 21:42:39 +00:00
Vadim Zeitlin
a781a38247 wxDeleteStockLists() used (instead of duplicating part of it's code)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@480 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 21:40:45 +00:00
Vadim Zeitlin
77ca46e7e3 extra memory amount allocated for string data reduced to the paragraph multiple:
so, in principle, it shouldn't waste any memory at all now (unless someone finds
a malloc implementation which is capable of allocation less than 16 bytes)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@479 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 21:39:43 +00:00
Vadim Zeitlin
fe7b115601 some minor changes in wxLogWindow
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@478 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 21:38:22 +00:00
Robert Roebling
b593568eca Correct the wxButton::Setlabel nonsense
Added wxFrame::SetClientSize


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@477 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 13:44:36 +00:00
Robert Roebling
b6af8d80dc Added wxDC:DrawPolygone
Corrected wxBitmap::SetLabel
  Added wxASSERT here and there
  wxDropSource:DoDrop() now returns Cancel when supposed to


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@476 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 13:11:54 +00:00
Julian Smart
7c23a0b01b Added stub include files; also a couple more Dialog Editor files.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@475 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 09:19:47 +00:00
Denis Pershin
843410bdd0 DP: framecmn.o & wincmn.o were duplicated...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@474 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 06:56:37 +00:00
Denis Pershin
fd4fec5bcf Another small modification... Sorry for CVS list overloading...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@473 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 06:38:16 +00:00
Denis Pershin
57c2c161e8 Small modification
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@472 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 06:36:33 +00:00
Denis Pershin
d8758bbc62 Looks like I did that...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@471 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 06:30:11 +00:00
Denis Pershin
e096c40c2b Third try to commit....
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@470 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 06:27:27 +00:00
Denis Pershin
1a5a836775 DP:
1. _() calls added where needed.
2. const added in params in postscrp.[h,cpp] in order to compile with
_().
3. Some .cvsignore added. (I did not found any .cvsignore in repository,
it is rather hard to compile something without them...)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@469 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 05:20:46 +00:00
Julian Smart
bbcdf8bc7c Fixed various wxMSW compile problems that came down the telephone line...
plus wxTreeCtrl::EditLabel/EndEditLabel, dialog editor stuff, wxMSW header changes,
doc changes. Sorry about the quantity :-(


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@468 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 23:52:45 +00:00
Vadim Zeitlin
c2d8daeb4a stray #include "wincmn.cpp" removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@467 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:38:30 +00:00
Vadim Zeitlin
3197ed26f0 wxTREE_INSERT_XXX constants were incorrectly defined (and so inserting the
items at the end, for example, didn't work)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@466 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:30:12 +00:00
Vadim Zeitlin
dc1c4b6213 the modal dialogs restore the focus to the control which had it before the
dialog was displayed (earlier, the focus was lost all the time)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@465 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:27:33 +00:00
Vadim Zeitlin
a02eb1d2b6 ProcessEvent() now saves the m_lastXXX parameters in case the event handler will
send any other events (without this it can easily lead to crash because DefWndProc
is called with garbage instead of correct parameters)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@464 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:25:09 +00:00
Vadim Zeitlin
83626bfa72 code using ms_PaintDC changed a little (a couple of asserts added, the behaviour
did not change)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@463 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:22:30 +00:00
Vadim Zeitlin
d2aef3124b improved handling of frames with parent: now they have a NULL parent HWND (to
avoid Win32 bugs in handling this situation) but still are iconized/restored
with their parent frame


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@462 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:21:08 +00:00
Vadim Zeitlin
c1066cdf62 VZ: I removed (CASTWNDPROC) from ::CallWndProc - it doesn't compile here with it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@461 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:18:43 +00:00
Vadim Zeitlin
c59147ba27 WM_GETDLGCODE handling correctly implemented
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@460 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:15:31 +00:00
Vadim Zeitlin
44a6c8e618 a couple of missing calls to UngetWriteBuf() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@459 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:10:33 +00:00
Vadim Zeitlin
aaab7c01dc now process UDN_DELTAPOS notification: up-down control (which appears if there
is not enough space for the pages) works correctly now


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@458 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:08:43 +00:00
Vadim Zeitlin
370382c71b added call to _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF) for
VC++: it gives at the end of the program report about memory leaks if any
similar to the one produced by the wxwin memory diagnostic classes (but it
works without problems with VC++ and costs nothing to add)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@457 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:07:03 +00:00
Vadim Zeitlin
d93f63db9d couple of minor bug fixes/enhancements (interface unchanged)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@456 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:03:16 +00:00
Robert Roebling
7c78e7c702 More configure fixes
/src/qt and /include/wx/qt now have stubs. Not everything
  compiles yet. But it's a start..


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@455 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 21:32:13 +00:00
Robert Roebling
b4e76e0d7e More work on wxQt integration, configure
I tried notr to break anything...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@454 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 20:23:17 +00:00
Robin Dunn
d50b2a58e9 Added missing call to wxInitializeStockLists() in CommonInit.
Come on people!  Before checking in changes that affect more than one
platform, please test more than one platform!


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@453 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 18:28:52 +00:00
Robin Dunn
35eca07ccd Removed a ">>>>>>> 1.5" (a CVS conflict indicator) that got left in
the code.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@452 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 17:32:54 +00:00
Robin Dunn
b5279053f6 Removed duplicate definitions of GetMenuCount and GetMenu so I could
compile.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@451 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 17:07:43 +00:00
Vadim Zeitlin
a3622daa90 (1) Denis Pershin's patch for wxGTK (memory leaks corrections)
(2) DELETEP/DELETEA globally renamed to wxDELETE/wxDELETEA and now also NULL
    their argument


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@450 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 15:09:04 +00:00
Guilhem Lavaux
0e072aac7a * Typo fix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@449 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 20:12:56 +00:00
Julian Smart
b1670f9641 Fixed someone's compile error in regconf.cpp (needed a cast to non-const).
Added nplugin sample HTML files, even if the samples have broken :-(


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@448 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 19:49:54 +00:00
Julian Smart
5de76427c8 OGL fixes; documentation fixes; dialog editor updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@447 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 19:42:06 +00:00
Karsten Ballüder
c6cdf16c93 several fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@446 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 19:23:19 +00:00
Robert Roebling
09cf7c5853 Fixed compilation (add serbase.cpp)
Added ListBox::SetString
 Changed listbox message behaviour to match wxMSW (I hope)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@445 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 19:07:05 +00:00
Robert Roebling
496e3a4a03 Now configure actually finds Lesstif and Qt
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@444 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 17:03:46 +00:00
Robert Roebling
a1a2adef07 New Unix configure system
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@443 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 16:18:34 +00:00
Vadim Zeitlin
df9067d85c compilation problem under Windows fixed (Karsten, you should use a cast when
calling a const function from a non-const one - gcc compiles it it, but it's
broken)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@442 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-05 21:51:47 +00:00
Guilhem Lavaux
123a7fddb8 * Added source file info in utils/serialize/*
* Added Windows support in dynlib.cpp (not tested)
* Added some operator in wxStream
* Added a mutex in thread sample (more later)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@441 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-05 17:12:43 +00:00
Julian Smart
e1a6fc11e2 Fixed popup menu processing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@440 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-05 16:35:09 +00:00
Robert Roebling
54ff4a701f Removed /install/gtk/configure from cvs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@439 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-05 16:33:18 +00:00
Karsten Ballüder
baeed2892d added SetRecordDefaults() and IsRecordingDefaults() methods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@438 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-05 14:15:13 +00:00
Julian Smart
2bb0cd285a Various bug fixes to OGL; wxStripExtension prototype added to filefn.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@437 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-05 07:13:08 +00:00
Guilhem Lavaux
7a4b9130e3 * Fixes and new features in wxObject*Stream
* Fixes: wxChoice (GTK), wxCheckBox (GTK)
* Fixes: wxStream
* wxObject calls wx*Serialize::LoadObject/StoreObject in StoreObject/LoadObject
* Added support for dynamic library (Linux only, Windows will follow)
* Added serbase.h (Serialization base defines and base object)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@436 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-04 17:49:26 +00:00
Guilhem Lavaux
9fdd83842f * Added serialization code to the repository
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@435 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-04 17:45:20 +00:00
Vadim Zeitlin
06db8ebd73 added wxLogWindow::GetFrame()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@434 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-04 16:42:34 +00:00
Vadim Zeitlin
3ed358cbfe size_t -> int conversion and the warnings about it corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@433 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-04 16:05:22 +00:00
Karsten Ballüder
ffbcbbb45a re-fixed wxFileConfig(wxString, wxString) constructor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@432 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-04 10:26:56 +00:00
Julian Smart
e8435fa381 Small fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@431 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-04 07:24:05 +00:00
Vadim Zeitlin
c5c16a3025 1) wxFileConfig now longer tries to delete system-wide config file in DeleteAll
(only the user's one)
2) wxLogStream "un#indef'ed" under wxGTK


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@430 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 23:23:56 +00:00
Vadim Zeitlin
a7489b367d check that wxTheApp != NULL in wxLog::GetActiveTarget
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@429 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 23:05:07 +00:00
Vadim Zeitlin
071cc2be5c crash in wxLog::GetActiveTarget() fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@428 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 23:03:59 +00:00
Vadim Zeitlin
f3e6e1b5d3 added framecmn.cpp and wincmn.cpp (hmm... how could it compile without them?)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@427 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 22:59:50 +00:00
Vadim Zeitlin
c614ed58d8 SelectItem() always sends the notification messages
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@426 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 22:57:30 +00:00
Vadim Zeitlin
ad553268cb wxApp::Get/SetVendorName functions added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@425 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 22:55:59 +00:00
Vadim Zeitlin
23fcecf783 added wxLocale::Init() and ctor without arguments for convenience
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@424 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 22:54:15 +00:00
Vadim Zeitlin
275bf4c13a minor changes and bug corrections (interface unchanged)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@423 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 22:49:01 +00:00
Vadim Zeitlin
0be4095abb wxConfig sample + wxGTK makefiles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@422 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 22:37:42 +00:00
Karsten Ballüder
574504ae85 grmbl, typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@421 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 15:11:47 +00:00
Karsten Ballüder
b925352b3a fixed GetGlobalFilename()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@420 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 13:59:41 +00:00
Karsten Ballüder
fe3229dfa4 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@419 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 13:59:11 +00:00
Karsten Ballüder
5a0f10a631 added another link
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@418 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 11:08:36 +00:00
Karsten Ballüder
dcbe388200 fixed wxFileConfig constructor bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@417 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 10:10:53 +00:00
Vadim Zeitlin
02569ba8eb wxIniConfig added (pre-alpha quality, many functions not implemented), some
bug fixes in wxRegConfig/wxRegKey


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@416 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 23:12:37 +00:00
Vadim Zeitlin
5fe256deb7 wxConfig -> wxConfigBase renaming plus some minor changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@415 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 23:11:03 +00:00
Vadim Zeitlin
88f2aa3720 trace mask made static variable
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@414 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 23:09:13 +00:00
Vadim Zeitlin
46eaa42260 trace mask made static variable (and corresponding accessors static functions)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@413 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 23:07:41 +00:00
Vadim Zeitlin
3bd8df227c the base class is now called wxConfigBase, wxConfig is #define'd as
wx{Reg|Ini|File}Config depending on the platform


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@412 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 23:06:42 +00:00
Vadim Zeitlin
8f494e5d87 minor changes to registry classes and wxIniConfig added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@411 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 23:04:55 +00:00
Robert Roebling
66bd6b9300 Fixed Fontdialog
Fixed frame positions/centering
  Fixed inserting mdi windows
  Changed control callbacks


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@410 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 20:38:05 +00:00
Karsten Ballüder
5787c2b9c2 added slash to path
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@409 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 16:59:53 +00:00
Robert Roebling
47908e25f9 Added bitmaps and icons to samples
Fixed event handling in all controls
  Add some missing functions to wxRadioBox
  Fixed clientData stuff to Choice (Combo?)
  No more gtk warning in Combo
  Fixed toolbar sample and mdi sample
  Fixed bug in AddChild resulting from mdi changes
  Fixed wxFrame::GetPosition()
  Changed order of notification calls in wxListCtrl
  to prevent what I think is a reentry bug
  The usual compile fixes here and there


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@408 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-31 20:04:04 +00:00
Julian Smart
110f32055e Added wxAccelerationTable class
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@407 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-31 13:22:58 +00:00
Julian Smart
57a7b7c148 Added wxAcceleratorTable, wxFrame::SetAcceleratorTable and additions to process it under wxMSW.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@406 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-31 13:01:34 +00:00
Julian Smart
bd0df01f3f Some manual updates; in MDI sample, child frames now have default size/position (hope
it's OK in wxGTK!)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@405 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-31 09:33:36 +00:00
Karsten Ballüder
db4365c912 added a comment and hopefully improved extent detectionn
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@404 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-31 08:41:17 +00:00
Karsten Ballüder
4f08af68b9 fixed stupid typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@403 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-31 08:38:06 +00:00
Julian Smart
4d0c0756e1 MSWOnMouseMove arg bug in toolbar; compile bug in regconf; fixed warning in odbc.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@402 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-30 09:37:26 +00:00
Robert Roebling
d4c99d6fa8 Pretty redical change concerning the underlying
X's windows' position. Even without having
  scrolled anywhere, the device origin of the
  top left corner is no longer certain to be
  zero,zero.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@401 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-30 09:16:21 +00:00
Karsten Ballüder
82ab121507 Setting of background colours is now correct.
Made virtual declarations depend on BROKEN_COMPILER define.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@400 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 13:57:51 +00:00
Robert Roebling
cf4219e77a wxMDIChildFrame inherits from wxFrame
toolbar work
  mini menubar change
  compile fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@399 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 13:21:22 +00:00
Vadim Zeitlin
da468d387d 1) APPCONF_ constants renamed to wxCONFIG_
2) wxConfig::Create() now chooses the best (native) implemenntation of
   wxConfig instead of calling wxApp::CreateConfig which was suppressed
3) wxFileConfig(const char *appname) ctor added which looks for the config
   file(s) in standard location(s)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@398 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 12:03:42 +00:00
Vadim Zeitlin
580c10e3ca wxApp::(S|G)etVendorName added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@397 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 12:00:17 +00:00
Julian Smart
f449ef69b4 Added missing OGL files; added defaults to wxDocMDIParentFrame; corrected
toolbar usage in Dialog Editor


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@396 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 10:43:51 +00:00
Karsten Ballüder
8dad2ab39e fixed compiler warning
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@395 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 10:43:11 +00:00
Karsten Ballüder
00e0d52a92 implemented correct setting of background colour for text
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@394 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 10:34:11 +00:00
Robert Roebling
b204641ec9 wxListCtrl selection improved
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@393 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 08:07:45 +00:00
Julian Smart
f7bd26981f Update to docs incl. wxString first stab; added a couple of palette-related events (wxMSW)
needed for wxGLCanvas


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@392 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 06:51:33 +00:00
Robert Roebling
9746a2ba50 Fixed bug in wxListCtrl
Made wxMDIDocView work


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@391 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 22:08:36 +00:00
Guilhem Lavaux
32a4b1d57c * Added Peek() to wxMemoryInputStream.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@390 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 17:11:08 +00:00
Julian Smart
00c75bb689 Added ODBC classes manual (Word 97).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@389 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 15:15:47 +00:00
Unknown (MO)
99cc0288bd Fixed wxOVERWRITE_PROMPT bug in gtk file selector
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@388 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 15:01:09 +00:00
Julian Smart
2108f33a68 Added MDI support for Document/view, plus an example.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@387 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 13:33:23 +00:00
Karsten Ballüder
22c248be96 fixed compiler warning (newline at last line missing)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@386 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 10:38:46 +00:00
Julian Smart
108106cfe7 Added ODBC database classes and sample from RemStar (sample needs work for wxWin 2)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@385 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 09:43:44 +00:00
Julian Smart
b3324be240 Changed files to work with wxDataFormat
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@384 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 08:12:20 +00:00
Robert Roebling
7b5408ea7d Fixed bug in MDI
Changed FortyThieves to 2.0 dialog logic
  Did I modify dialog.cpp as well?


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@383 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 07:50:45 +00:00
Robert Roebling
d355d3fe69 wxFrame::SetIcon()
it's possible now to call Close() after ShowModal()
  dialog sample works
  changed wxString::First() etc to return -1


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@382 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 23:01:43 +00:00
Robert Roebling
e3e65dac0c warning msgs
toolbar updates
mdi fixes
dnd works now
Forty Thieves drawing optimization
wxDF_Text constants
ListCtrl bugs fixed
memory leak work
imrc now refers to home dir
dcclient/memory leak fixed


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@381 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 20:50:48 +00:00
Karsten Ballüder
bf79063cc8 more comments
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@380 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 20:39:50 +00:00
Guilhem Lavaux
1eac776c03 * Bug fixes
* Changed wxObjectOutputStream::AddChildren() to AddChild()


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@379 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 17:08:49 +00:00
Julian Smart
0757d27c1e Changed event type ids to constants instead of enum, for extensibility.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@378 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 16:17:59 +00:00
Karsten Ballüder
a97aaabf5c make wxS_DEFAULT consistend with standard Unix behaviour
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@377 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 09:52:49 +00:00
Julian Smart
81d66cf39f wxToolBar API changes; now frames manage their toolbar & statusbar properly;
client area position is used in SetSize; changes for BC++ & VC++ 1.5;
wxWindow::GetUpdateRegion added; removed wxUpdateIterator; some missing functions
added to process.cpp; bad navigation key event cast fixed; MDI and toolbar samples
updated; new wxMSW wxRegion constructor (WXHRGN)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@376 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 09:47:57 +00:00
Vadim Zeitlin
e6688c3fd2 double wxMenuItem definition problem fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-26 00:10:52 +00:00
Guilhem Lavaux
7b124d5404 * Deleted #include "wx/bufstrm.h"
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@374 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-25 10:19:18 +00:00
Robert Roebling
bd7d06f23d Removed warnings mesgs
Doesn't compile due to missing bufstream


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@373 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-25 08:31:39 +00:00
Julian Smart
f701d7abc1 Corrected some problems
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@372 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 22:04:21 +00:00
Julian Smart
527fc629c8 Added missing accessors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@371 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 20:48:49 +00:00
Julian Smart
37f0deedfa Added missing files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@370 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 20:48:25 +00:00
Julian Smart
b979f8772c Removed explicit #defines for wxToolBar
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@369 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 20:47:43 +00:00
Julian Smart
3d8bd7d6bf Removed duplicate code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@368 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 20:46:39 +00:00
Julian Smart
cc79e53c16 Small change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@367 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 20:45:26 +00:00
Julian Smart
03f68f123b Dialog Editor edits
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@366 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 20:44:36 +00:00
Julian Smart
63cafd2799 Added Forty Thieves
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@365 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 19:43:32 +00:00
Robert Roebling
46dc76ba35 wxFrame::CreateToolBar() stuff
wxDC::SetBackground from Chris Breeze
zillions of compile fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@364 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 19:05:25 +00:00
Guilhem Lavaux
d602f1d8b6 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@363 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:44:44 +00:00
Guilhem Lavaux
6d44bf31a6 * Ooops, I didn't copy the files in the right directory of my repository.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@362 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:21:06 +00:00
Guilhem Lavaux
1678ad7802 * New wxStream classes: wxStreamBuffer and wxObject*Stream.
* Changes: ofsInvalid => wxInvalidOffset in filefn.h
* Updates: all wxStream classes use wxStreamBuffer.
           wxObject basic declaration changes (added LoadObject, modified
           StoreObject)
* Some base of the serialization.
(I hope not to have forgotten any files)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@361 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:13:47 +00:00
Vadim Zeitlin
439b3bf1f5 some common code moved from wxWindow/wxFrame into files in common subdir
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@360 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:06:45 +00:00
Vadim Zeitlin
d37a02d0d5 SelectItem() now sends a wxEVT_SELECTED notification.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@359 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:04:48 +00:00
Vadim Zeitlin
246037e229 added "access" parameter to wxFile::Create and Open. The default value is
"rw-r--r--" mode.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@358 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:03:26 +00:00
Vadim Zeitlin
13289f04ae scrollbar support added (experimental)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@357 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:02:23 +00:00
Julian Smart
0f217db318 New toolbar event processing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@356 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 15:47:22 +00:00
Julian Smart
6a23cbcede Removed compile bugs in regconf.cpp, added new toolbar event processing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@355 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 15:46:52 +00:00
Julian Smart
a37e883612 Altered event.h to reflect new toolbar event handling; removed bugs in regconf.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@354 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 15:44:58 +00:00
Julian Smart
13437238cd Updated the toolbar sample to reflect updated event handling.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@353 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 15:43:03 +00:00
Vadim Zeitlin
44216b3b2e added default value for "int type" (wxBITMAP_TYPE_XPM) in wxBitmap ctor
and Load() method


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@352 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 14:35:48 +00:00
Vadim Zeitlin
a7ca513e5a removed #define wxToolBarGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@351 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 13:17:04 +00:00
Karsten Ballüder
8ffec97a6e fixed appending of '/' to empty string
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@350 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 12:18:23 +00:00
Karsten Ballüder
6134811179 fixed private member access problem
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@349 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 10:31:25 +00:00
Vadim Zeitlin
fe3d8179fa oops... a typo in just checked in file corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@348 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 17:56:13 +00:00
Vadim Zeitlin
904f68c7e8 call to SetLabel in Create() added to strip "&" characters from the label
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@347 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 17:54:24 +00:00
Vadim Zeitlin
389cdc7ae4 wxTreeControl::Get/SetSelection implemented
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@346 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 17:53:50 +00:00
Vadim Zeitlin
543e7dd22a now wxToolBarGTK is #define'd as wxToolBar under wxGTK and not vice versa
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@345 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:10:48 +00:00
Vadim Zeitlin
43fa96a840 IsItemExpanded() function added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@344 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:09:55 +00:00
Vadim Zeitlin
aed8df383f wxUpdateUI events generation added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@343 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:08:49 +00:00
Vadim Zeitlin
9406d962cc IsModified() function now works correctly
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@342 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:08:28 +00:00
Vadim Zeitlin
7c41ac7b42 SetModified() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@341 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:07:55 +00:00
Vadim Zeitlin
fd4bc7de65 OnSize removed (not needed any more after Robert's fix)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@340 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:07:27 +00:00
Vadim Zeitlin
83885a398b more accessors added, member variablesmade private
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@339 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:07:05 +00:00
Vadim Zeitlin
ab16f4a300 DoMenuUpdates()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@338 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:06:23 +00:00
Vadim Zeitlin
4632781333 added flag wxFILE_MUST_EXIST
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@337 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:05:39 +00:00
Vadim Zeitlin
2a4f4a2773 GetLabel() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@336 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:05:14 +00:00
Vadim Zeitlin
19717c50b9 common functions moved into ../common/framecmn.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@335 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:03:53 +00:00
Vadim Zeitlin
96fd301f0e made the code more wxMSW compatible
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@334 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:02:54 +00:00
Vadim Zeitlin
caac51810b made the constraintsin notebook pages work (once again)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@333 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:02:23 +00:00
Vadim Zeitlin
5e0aa05a52 added wxUpdateUI generation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@332 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:01:52 +00:00
Vadim Zeitlin
7ec1983bfa common part of wxWindow class
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@331 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:01:33 +00:00
Vadim Zeitlin
32c77a7133 removes "&" from wxControl's label (also for buttons and stattext)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@330 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 15:59:55 +00:00
Vadim Zeitlin
9ec05cc986 choosing "Cancel" in the message box which appears when an wxASSERT fails also
suppresses wxLogDebug() messages


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@329 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 15:57:47 +00:00
Vadim Zeitlin
63fec618dc common code of wxFrame class
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@328 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 15:56:50 +00:00
Vadim Zeitlin
3bbb630a21 a warning in the release build suppressed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@327 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 15:56:30 +00:00
Julian Smart
14d1ccd89d Created new, simplified toolbar sample; removed other toolbar samples.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@326 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 14:39:46 +00:00
Julian Smart
73e7daa02e Moved Get/SetToolBar down into frame.h/cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@325 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 14:25:44 +00:00
Vadim Zeitlin
30474825bb added #define wxToolBar wxToolBarGTK for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@324 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 12:33:08 +00:00
Robert Roebling
716b736420 mdi private menus
Chris's check menu additions
frame fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@323 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-22 22:13:31 +00:00
Julian Smart
47fa796902 Added wxString version of wxStripExtension; changed OnClose to return TRUE;
fixed some bad casts in resource.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@322 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-22 13:54:47 +00:00
Julian Smart
9123006f13 Added wxString version of wxStripExtension; changed OnClose to return TRUE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@321 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-22 13:53:47 +00:00
Vadim Zeitlin
7228ab483e warning under gcc removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@320 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-22 11:33:15 +00:00
Karsten Ballüder
240d850370 fixed duplicate definition
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@319 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-21 13:41:40 +00:00
Vadim Zeitlin
c3b0ff9c7a bug in wxFileConfig::DeleteEntry/Group corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@318 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 22:26:39 +00:00
Vadim Zeitlin
4d14b52449 corrected bug in wxArrayString::operator= and it's copy ctor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@317 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 22:23:51 +00:00
Robert Roebling
e2414cbe8c many fixes to wxTextCrtl, wxTreeCrtl, wxListBox,
wxDialog, wxFrame
two more samples work now, docview and treectrl


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@316 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 18:05:48 +00:00
Unknown (MO)
035b704a46 Added use of default file/dir and confirm on overwrite to file selection
dialog


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@315 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 14:59:54 +00:00
Karsten Ballüder
f40ccee99b fixed config incosistency
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@314 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 12:20:06 +00:00
Karsten Ballüder
3d6a5e3c5b added -O0 to debug flags to disable optimisation - might break things for non-gcc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@313 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 11:25:50 +00:00
Karsten Ballüder
9480f5d151 printing added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@312 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 08:43:47 +00:00
Vadim Zeitlin
86bb7d4825 infinite loop in wxNavigationKeyEvent processing fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@310 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-19 20:46:35 +00:00
Vadim Zeitlin
ae29de8326 MSWGetDlgCode() behaviour changed to allow both TAB navigation in the
dialogs, pressing Enter to activate default button and processing Enter
by the text control itself.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@309 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-19 20:45:51 +00:00
Julian Smart
a93ca20183 Renamed a couple more samples/controls files; fixed wxSplitterWindow cursors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@308 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-19 20:09:44 +00:00
Karsten Ballüder
26cf69fe72 fixed the ps dialog but doesn't all work yet
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@307 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-19 17:39:07 +00:00
Julian Smart
637f467a06 wxDocManager gets the only view if none other specified as the current view;
added ProcessEvent so views get their events processed properly.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@306 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 22:04:25 +00:00
Julian Smart
0fc1a7137c Added revamped Object Graphics Library (for node/arc diagrams).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@305 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 21:57:52 +00:00
Vadim Zeitlin
0f7549d594 a couple of functions added (GetNumberOfGroups/Entries, ExpandEnvStrings),
some global functions renamed to start with "wx"


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@304 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 21:47:45 +00:00
Vadim Zeitlin
82cf4761e1 small bug fixes + a couple of new functions added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@303 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 21:44:54 +00:00
Vadim Zeitlin
9fbd8b8d61 several bugs fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@302 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 21:15:37 +00:00
Guilhem Lavaux
cf5f9c9c3e wxFrame: OnSize() has a SEGV if wxFrame has no child. Fixed.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@301 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 10:44:31 +00:00
Robert Roebling
0d73e5a104 ODBC compile (and link) fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@300 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 10:15:35 +00:00
Robert Roebling
1a6944fd74 added ODBC support
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@299 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 00:57:32 +00:00
Vadim Zeitlin
c83d505a20 compile without STRICT fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@298 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 22:34:15 +00:00
Vadim Zeitlin
c7f3b78bac corrected (after wxTString untimely death) and expanded
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@297 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 21:21:02 +00:00
Vadim Zeitlin
3aadbb82d9 the very last traces of wxTString removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@296 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 21:13:13 +00:00
Julian Smart
11ed4f79aa Bug fix to scrolwin.cpp (position not set in SetScrollbars); redundant variable
in wxGrid removed


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@295 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 21:03:05 +00:00
Vadim Zeitlin
99d270120e don't set focus to [ok] in text entry dialog (leave the text zone have it)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@294 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 21:01:47 +00:00
Vadim Zeitlin
7502ba2975 last traces of wxTString removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@293 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 21:00:11 +00:00
Vadim Zeitlin
3168a13f90 correct (working) version of wxString
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@292 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 20:58:33 +00:00
Vadim Zeitlin
a1530845c9 wxTString removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@291 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 20:52:40 +00:00
Vadim Zeitlin
6b95b20d03 correct (working) version of wxString
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@290 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 20:51:36 +00:00
Vadim Zeitlin
36af0bc423 another "const" added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@289 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 13:07:33 +00:00
Vadim Zeitlin
85ccdcce1c some "const"s added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@288 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 12:44:13 +00:00
Karsten Ballüder
e14dccff1c fixed, latex now works for manual.tex and referenc.tex, but
referenc.tex fails with index


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@287 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 12:34:50 +00:00
Julian Smart
d6a1743b56 Some Borland/GnuWin32 fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@286 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 11:10:38 +00:00
Karsten Ballüder
18a2fa3715 fixed underline for drawing text, as suggested by Chris Breeze
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@285 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 10:06:26 +00:00
Julian Smart
c4e7c2aa58 Added STRICT corrections.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@284 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 09:32:24 +00:00
Vadim Zeitlin
e99c304810 fixed compilation problems under Windows
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@283 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 08:18:57 +00:00
Robin Dunn
3848ffef9f fixed a missing backslash
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@282 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 03:35:20 +00:00
Vadim Zeitlin
f5ae044937 wxFileConfig uses sorted arrays (big performance improvement)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@281 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-16 17:30:39 +00:00
Vadim Zeitlin
3bfa440288 added sorted arrays: they automatically sort items on insertion (using user
provided compare function) and binary search in Index(). Using them in
situations where Index() performance is important brings 30%-40% performance
boost.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@280 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-16 17:29:46 +00:00
Julian Smart
400735a8fa Cured SetString/GetSelection interaction; incorporated Chris's changes to wxDC:Blit
for printer DCs.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@279 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-16 08:34:29 +00:00
Robin Dunn
1eb20d4a08 Inserted an else that seemed to be missing. (My RadioBox crashed
without it...)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@278 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-16 06:47:27 +00:00
Guilhem Lavaux
e49f47aa77 wxStream: wxInputStream and wxOutputStream don't inherit from wxObject anymore.
Removed DECLARE* and IMPLEMENT*
filefn.h: added #include "wx/list.h" to define wxStringList


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@277 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 18:40:37 +00:00
Vadim Zeitlin
ba7f9a90b4 speed optimizations: some functions now use wxString::Alloc, wxTextFile::Read
uses a buffer to read data (instead of reading it one char at a time)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@276 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 17:14:06 +00:00
Vadim Zeitlin
dd1eaa89dd optimizations: more functions made inline, added Alloc()/Shrink() function for
more precise control over string's memory


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@275 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 17:10:23 +00:00
Karsten Ballüder
2ab889ff7b added gauge.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@274 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 14:38:57 +00:00
Karsten Ballüder
5a8c6c9adb fixed SetRange/GetValue
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@273 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 14:37:42 +00:00
Karsten Ballüder
24e5e6fcb4 fixed wxGTK copyright
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@272 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 12:02:40 +00:00
Karsten Ballüder
b4c05cda99 On Robert's request I have added the html-version of my wxQt proposal.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@271 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 12:00:42 +00:00
Vadim Zeitlin
45ea509a21 common constants (wxSeekMode) and types (off_t) to wxFile and wxStream are
now defined in filefn.h included by both file.h and stream.h


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@270 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 22:15:29 +00:00
Vadim Zeitlin
eda3efe2f8 off_t #define'd as _off_t for VC++ (it's not a standard type)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@269 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 22:08:59 +00:00
Vadim Zeitlin
30a5be975d GetTempFileName used in wxTempFile now instead of tmpnam
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@268 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 21:59:27 +00:00
Vadim Zeitlin
0ce2baa5e6 ExpandEnvVars was eating backslashes - no more.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 21:57:24 +00:00
Vadim Zeitlin
3826db3ef5 added wxSplitFile() to decompose a file name into path + name + ext
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@266 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 21:55:47 +00:00
Vadim Zeitlin
92abb45d0a 1) added wxSplitFile() to decompose a file name into path + name + ext
2) added a macro wxARE_FILENAMES_CASE_SENSITIVE which is either 1 or 0
   (for usage with wxString::IsSameAs)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@265 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 21:55:17 +00:00
Guilhem Lavaux
0cd9bfe8da * wxMemory*Stream link problem fix.
* wxData*Stream update.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@264 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 16:35:50 +00:00
Guilhem Lavaux
79c3e0e1ae * wxStream: I've rewritten the inheritance
* added wxZlib*Stream
* updated makefiles and data.cpp
* modified a bit wxFile so I can use it in wxFile*Stream


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@263 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 12:06:50 +00:00
Robert Roebling
33d0b396b2 resize mdi and notebook client
bitmap resizing (used in imagelist)
draw spline bug


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@262 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 23:30:59 +00:00
Julian Smart
d29d303b1c In splitter sample, forwarded OnIdle events to wxFrame, else UI updates don't
work. Removed compatibility function from docview.h.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@261 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 20:11:21 +00:00
Robert Roebling
0180d5daae memdc and bitmap fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@260 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 17:00:29 +00:00
Vadim Zeitlin
5a8c929eb4 constraints for notebook pages work (again)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@259 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 16:57:43 +00:00
Karsten Ballüder
85504caca9 fixed DEBUG
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@258 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 15:46:01 +00:00
Karsten Ballüder
c6cdbc3d75 Changed #ifdef DEBUG to #ifdef __WXDEBUG__
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@257 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 14:11:22 +00:00
Karsten Ballüder
70bb5dba34 Quick fix to avoid unnecessary compiler warnings from duplicate __WXDEBUG__ defines.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@256 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 12:47:02 +00:00
Karsten Ballüder
4acbf24597 Configure now adds -D__WXDEBUG__ to the compiler switches if run with
--with-debug_flag.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@255 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 12:45:47 +00:00
Karsten Ballüder
f0b078077d Fixed that stupid stream problem.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@254 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 10:01:29 +00:00
Julian Smart
db138a4c2a Removed streams from VC++ makefile for now; corrected typo in log.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@253 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 09:15:56 +00:00
Karsten Ballüder
ddfc206782 uses wxString again (std::string optional)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@252 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 08:48:38 +00:00
Vadim Zeitlin
7d7fb17e1d GetTextExtent checks that passed pointers are not NULL
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@251 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 23:23:11 +00:00
Vadim Zeitlin
27c9fe7554 wxLogDebug/Trace in release mode now don't give compiler warnings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@250 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 23:07:22 +00:00
Vadim Zeitlin
b5c3b53817 constraints handling for notebook pages improved
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@249 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:59:00 +00:00
Vadim Zeitlin
e15e548b50 wxFILE_MUST_EXIST added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@248 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:57:42 +00:00
Vadim Zeitlin
db8b79634e wxWindow::OnSize() removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@247 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:52:14 +00:00
Vadim Zeitlin
092bddef5a 1) separate expand/collapse event
2) separate Expand/Collapse/ToggleItem() functions
3) IsItemExpanded() added


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:50:32 +00:00
Vadim Zeitlin
5475b96085 constraints handling for the notebook pages fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@245 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:47:09 +00:00
Vadim Zeitlin
a8e50c86a4 defined wxFILE_MUST_EXIST flag
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@244 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:46:10 +00:00
Vadim Zeitlin
f04f399187 wxGetEmptyString() function added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@243 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:40:00 +00:00
Vadim Zeitlin
02ce7b722e 1. expand/collapse (and -ing variants) events are now separated
2. ExpandItem(action) can now be also called as ExpandItem(), CollapseItem()
   and ToggleItem()
3. several other minor changes (IsExpanded function added)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@242 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:25:34 +00:00
Vadim Zeitlin
abc7998686 added missing UngetWriteBuf() in wxString::insert
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@241 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:06:28 +00:00
Vadim Zeitlin
128aec1da4 memory leak plugged
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@240 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:05:16 +00:00
Vadim Zeitlin
cd70477bbd wxFrame::OnSize() slightly optimized (the behaviour is the same as before)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@239 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 21:55:31 +00:00
Vadim Zeitlin
d8329927ee wxWindow::OnSize() removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@238 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 21:49:45 +00:00
Robert Roebling
219f895a27 stream compile fixes
bitmap, icon, imaglist work (broken)
notebook client resize fixed (ugly)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@237 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 20:06:59 +00:00
Guilhem Lavaux
3cacae09fa Added IMPLEMENT_CLASS, ... about wxStream classes (I hope I didn't make mistakes).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@236 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 15:36:53 +00:00
Guilhem Lavaux
32fc4afbb2 Ooops ! I've forgotten the include files.
mmstream.cpp => mstream.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@235 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 15:24:52 +00:00
Guilhem Lavaux
3d4c6a214a Added wxStream but I haven't tested them.
Modified wxDataStream.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@234 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 15:16:09 +00:00
Karsten Ballüder
23f641681f latest sources from M
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@233 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 15:02:44 +00:00
Julian Smart
4414cc1db8 Added wxTreeLayout for wxWindows 2.0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@232 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 09:21:16 +00:00
Julian Smart
ad3ad68e15 Added gtk.rsp, a 'response' file (listing of all wxGTK-specific files)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@231 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 09:17:14 +00:00
Julian Smart
3e1a3a402d Removed #pragmas in utils.cpp, corrected USE_(WX)DEBUG_CONTEXT,
added wx200gtk.zip creation in zipdist.bat.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@230 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 09:16:20 +00:00
Guilhem Lavaux
0f460a1d4b Deleted "#include <sched.h>".
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@229 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-11 14:51:58 +00:00
Robert Roebling
401ec7b639 event/leave events
scrollbar fix
listctrl fix


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@228 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-11 09:53:58 +00:00
Robert Roebling
4c6819972f tree control and dc::drawlines bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@227 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 23:08:39 +00:00
Vadim Zeitlin
da7f8ac4dd wxWindow::OnSize() does _not_ call Layout() (it should only be done for
top-level windows)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@226 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 17:46:08 +00:00
Vadim Zeitlin
ed7a557b53 wxFrame::OnSize() calls Layout() if GetAutoLayout()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@225 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 17:45:38 +00:00
Karsten Ballüder
2049ba38ad Changed __GTK__, __WINDOWS__ and __MOTIF__ to __WXGTK__, __WXMSW__ and __WXMOTIF__
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 14:15:17 +00:00
Karsten Ballüder
7007fcfced Fixed implementation pragma to "utils.h"
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@222 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 13:34:20 +00:00
Karsten Ballüder
8c43d1c898 DEBUG -> WXDEBUG
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@221 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 12:06:03 +00:00
Karsten Ballüder
2216f571bf still fixing DEBUG macros
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 12:01:16 +00:00
Karsten Ballüder
54fe0dcf9a fixed another @DEBUG@
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@219 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 11:55:19 +00:00
Karsten Ballüder
b2aef89b7a Cleared up DEBUG define mess, defines are now called __WXDEBUG__ and WXDEBUG.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@218 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 11:14:17 +00:00
Julian Smart
8b9518ee4a Fixed const problems in status bar code, changed panelg.cpp temporarily to
stop infinite loop, added notebook.cpp in wxMSW makefiles. Fixed #pragma
in utilscmn.cpp YET again.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@216 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 10:39:48 +00:00
Julian Smart
447daba1ce Changed name of controls sample.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@215 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 10:36:57 +00:00
Karsten Ballüder
a19102646e fixed arguments to make it wxMSW compatible
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@214 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 08:26:54 +00:00
Vadim Zeitlin
88310e2e82 MSW wxNotebook implementation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@213 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-09 20:19:33 +00:00
Vadim Zeitlin
7fd1d163b7 wxWindow::IsShown() made 'const'
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@212 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-09 15:59:27 +00:00
Vadim Zeitlin
6e4739a0e1 wxWindow::FindFocus() doesn't exist in wxGTK - #ifdef'd out
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@211 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-09 12:26:38 +00:00
Vadim Zeitlin
0abbe29739 added virtual bool wxWindow::AcceptsFocus()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@210 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-09 12:24:13 +00:00
Robert Roebling
c0392997c9 ThreadnoGui compiles now.
A few more compilefixes.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@209 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-09 06:25:37 +00:00
Vadim Zeitlin
c99a3a1d94 wxCHECK/CHECK_RET adjustments
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@208 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 23:13:47 +00:00
Vadim Zeitlin
524761867c added virtual functions AcceptsFocus() and MSWGetDlgCode()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@207 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:44:10 +00:00
Vadim Zeitlin
670c3849fd added Acceptsfocus() { return FALSE; }
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@206 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:41:38 +00:00
Vadim Zeitlin
19ddda8406 added AcceptsFocus() { return FALSE; }
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@205 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:41:07 +00:00
Vadim Zeitlin
8a33ea6250 improved keyboard handling, bug fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@204 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:39:21 +00:00
Vadim Zeitlin
3bfaaefe96 Last() function added (the same as Item(Count() - 1))
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@203 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:37:57 +00:00
Vadim Zeitlin
47cbd6da8f 1) keyboard handling: now generates NavigationKey events instead of using
IsDialogMessage (which is still called if the event is not processed)
   which gets very confused in complex dialogs
2) added tracing of Windows messages


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@202 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:33:24 +00:00
Vadim Zeitlin
c1e3482862 bug with multi-part status bars with default widths corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@201 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:29:11 +00:00
Vadim Zeitlin
b7dd52e9ad wxDC::GetTextExtent() checks that passed in x and y pointers are !NULL
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@200 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:27:17 +00:00
Vadim Zeitlin
097c080b74 Matches() and UngetWriteBuf() added, several asserts added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@199 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:21:55 +00:00
Vadim Zeitlin
8fd0f20ba4 1) some size_t replaced with uint - does it now compile under Alpha??
2) added Matches(const char *mask) function which checks if the string
   matches the mask possibly containing '?' and '*' wildchars
3) GetWriteBuf complemented with UngetWriteBuf


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@198 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:21:11 +00:00
Vadim Zeitlin
93da8c4246 trace messages are now turned off by default
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@197 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:17:50 +00:00
Vadim Zeitlin
7fdefd5755 wxNavigationKeyEvent class and corresponding macro added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@196 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:16:19 +00:00
Vadim Zeitlin
b09dcbf5cb IMPLEMENT_DYNAMIC_CLASS(wxNavigationKeyEvent, wxCommandEvent) added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@195 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:15:30 +00:00
Vadim Zeitlin
e163f7bb2a 1) keyboard handling added (OnNavigationKey)
2) removed default values from the old-style ctor to make it possible to
   use the new one with default args


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@194 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:12:44 +00:00
Vadim Zeitlin
90c3bdac77 keyboard handling added (OnNavigationKey)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@193 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:12:03 +00:00
Vadim Zeitlin
330043b46d a couple of "const" mistakenly removed restored
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@192 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:09:37 +00:00
Guilhem Lavaux
4d1f281b6d Small updates in the documentation about threads.
Documentation about wxDataStream added.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@191 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 19:06:13 +00:00
Vadim Zeitlin
6d8335660f HasGroup/Entry added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@190 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 17:56:43 +00:00
Julian Smart
6a6c0a8bda Removed redundant auto-setting code in wxDC; corrected utilscmn.cpp pragma;
added inlines using wxPoint/wxSize/wxRect in dc.h.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@189 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 15:52:22 +00:00
Julian Smart
b7346a70cf Cured a bad assert in wxStatusBar; #ifdefed oleutils.cpp for VC++ 5.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@188 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 13:21:23 +00:00
Karsten Ballüder
c79064fbc3 Corrected convert path to /usr/X11/bin, the default installation path.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@187 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 10:40:08 +00:00
Julian Smart
e5ad6961eb Fixed event arg in notebook.h, #ifdefed out some functions in oleutils that
don't compile in VC++ 4.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@186 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 10:05:51 +00:00
Karsten Ballüder
6163f5d8b0 Some fixes for Solaris (2.5).
Fixed path to png.h in gdk_imlib_private.h.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@185 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-07 15:59:37 +00:00
Julian Smart
bb6290e351 Various bug fixes, cosmetic changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@184 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-07 14:57:42 +00:00
Vadim Zeitlin
876419ce60 added HasEntry/Group function to wxConfig, corrected entry/group deletion
bug (were not deleted from file) in wxFileConfig


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@183 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-07 13:53:19 +00:00
Vadim Zeitlin
a32dd69091 added missing DeleteItem(long itemId) function
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@182 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-07 13:16:37 +00:00
Karsten Ballüder
0e338ff9a3 Fixed broken Ieee extension for configure --without-apple_ieee
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@181 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-07 10:43:26 +00:00
Guilhem Lavaux
8c46af496a * Fixed configuration problem (#if USE_APPLE_IEEE)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@180 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-05 14:39:29 +00:00
Julian Smart
debe6624c1 Sorry, I went and removed consts as per the style guide :-)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@179 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-04 15:17:59 +00:00
Guilhem Lavaux
eafc087e69 * Fixed Async -> sync in wxExecute
* Added documentation about wxProcess, ...
* Added wxDataStream::WriteString and wxDataStream::ReadString


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@178 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-03 17:44:34 +00:00
Julian Smart
884360bc11 Various documentation changes, makefile fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@177 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-03 16:39:59 +00:00
Julian Smart
0d3820b348 Added #pragmas for gcc.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@176 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-03 16:36:10 +00:00
Julian Smart
cfe780fb99 Added wxExpr parser/lexer files which had somehow got lost;
added some pragmas.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@175 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-03 16:34:35 +00:00
Guilhem Lavaux
ca7731b7c8 * Deleted all ^M
* Added common/process.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@174 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 17:43:02 +00:00
Julian Smart
e74d736b5a Added dummy constructors etc. for wxProcess(Event) until Guilhem does it
for real.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@173 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 16:40:30 +00:00
Julian Smart
4ce7bc3ebf Added extra Dialog Editor icons
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@172 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 15:43:40 +00:00
Karsten Ballüder
595bcfe9fc Fixed the configure apple-ieee to apple_ieee.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@171 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 15:38:21 +00:00
Julian Smart
ae8351fc61 Major changes to Dialog Editor (still at alpha level)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@170 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 15:19:34 +00:00
Julian Smart
201812a850 Removed some consts from tabctrl.h; fixed some other errors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@169 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 15:17:35 +00:00
Julian Smart
5260b1c582 Various changes for 16-bit compilation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@168 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 15:16:56 +00:00
Vadim Zeitlin
ccd82cd130 old TODO renamed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@167 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 14:01:27 +00:00
Vadim Zeitlin
0ef0f35a33 renamed to TODO.txt (you really shouldn't use Explorer, Julian! :-)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@166 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 14:00:05 +00:00
Vadim Zeitlin
ec69bbe8fa the file which contains TODO issues (with their priorities) for all platforms
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@165 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 11:40:53 +00:00
Vadim Zeitlin
484e45bff5 * added gtk_text_changed callback and implemented DiscardEdits(), so that
now IsModified() works correctly
* corrected several "off by 1" errors for wxTE_MULTILINE controls
  (apparently it was a GTK bug so perhaps it doesn't work correctly with
   previous GTK versions, but it works correctly with the latest, GTK 1.0.4)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@164 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-01 18:58:24 +00:00
Guilhem Lavaux
3259263158 * Well, I've forgotten this file :-(
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@163 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-01 17:28:14 +00:00
Guilhem Lavaux
cf44735628 * Changed "true" to "TRUE" in some file: "true" doesn't exist in BC++ 5
* Added wxDataStream and wxProcess
* Added the asynchronous end process notification on GTK and MSW
* Updated configure* and setup.h
* Added extended.c: Apple code to encode/decode float in IEEE format
  this code is removable by disabling USE_APPLE_CODEC


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@162 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-01 17:26:46 +00:00
Vadim Zeitlin
0423b68518 wxImageList ctor now takes the same arguments as the MSW version (but it's
still not implemented)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@161 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-01 15:43:03 +00:00
Vadim Zeitlin
74bedbeb40 many changes to make generic tree control (more) MSW compatible:
1) wxEVT_COMMAND_TREE_EXPANDING event now generated
 2) tree control doesn't not delete children on branch collapse any more
 3) migging image list and image-related functions added (but not yet
    implemented)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@160 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-01 15:42:11 +00:00
Karsten Ballüder
fd02ae23c2 Removed the WXUNUSED() from size parameters in wxIcon(filename,width,height)
and added default values of -1,-1 to make it compatible with MSW behaviour.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@159 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-30 12:42:46 +00:00
Vadim Zeitlin
29d87bba53 fixes redraw bug which was leaving a horizontal strip under the tree item
after it was unselected (in wxGTK)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@158 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-29 16:23:41 +00:00
Karsten Ballüder
a5f81d8c07 Added my wxWindows based layout engine to the repository.
It arranges text and graphics for display on a wxDC.
This code is licensed under the LGPL.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@157 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-29 12:44:36 +00:00
Karsten Ballüder
8f79098a04 fixed event type parameter
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@156 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-29 12:18:42 +00:00
Julian Smart
780d37acc7 Separated out Win95 versions of gauge, slider
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@155 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-28 11:34:42 +00:00
Julian Smart
ad860fbf5d *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@154 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-28 11:33:08 +00:00
Julian Smart
da87a1ca42 Separated out Win95 versions of gauge, slider; added wxTabCtrl::GetCurFocus
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@153 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-28 11:32:14 +00:00
Julian Smart
003a43dc88 Changes for wxEventType
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@152 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 22:00:38 +00:00
Julian Smart
6c6f51f6bb Changes to aid debugging.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@151 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 21:59:42 +00:00
Julian Smart
646930985a wxEventType alterations.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@150 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 20:19:48 +00:00
Julian Smart
7798a18ec8 New wxEventType for event type enum, and corresponding alterations.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@149 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 20:18:30 +00:00
Vadim Zeitlin
68919656bb corrected "of by 1" error in wxString::insert()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@148 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 15:39:01 +00:00
Vadim Zeitlin
604a178390 added support for label alignments in wxStaticText::Create()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@147 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 14:29:47 +00:00
Vadim Zeitlin
ff829f3f6d made the interface more compatible with the MSW version (although
InsertPage and wxEVT_PAGE_CHANGING are still not implemented) and
implemented the wxEVT_PAGE_CHANGED callback.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@146 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 14:29:11 +00:00
Julian Smart
dabeb02181 Cured DC/GDI object leak; listbox window proc restored from debugging
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@145 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-25 21:30:23 +00:00
Julian Smart
ad95e0f64e Various measures to reduce flicker.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@144 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-25 09:45:27 +00:00
Julian Smart
da938cfd99 Reduced flicker by a combination of less background erasing, and double-buffering.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@143 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-25 09:43:59 +00:00
Vadim Zeitlin
f1da2f03fc misleading wxASSERT() corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@142 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-24 14:37:28 +00:00
Vadim Zeitlin
20193f1dab bug in wxNotebook::OnSize() corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@141 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-23 17:47:42 +00:00
Vadim Zeitlin
4e6322e0e5 added OnSize() to wxNotebook which forwards size events to the pages: fixes
the layout problem


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@140 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-23 16:28:49 +00:00
Julian Smart
46851318fe Corrected problem with MDI children not refreshing (removed WS_CLIPCHILDREN).
Double-fixed the LEAVE/ENTER bug...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@139 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-23 10:29:23 +00:00
Julian Smart
ab22cb9a01 Removed deletion of m_selections
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@138 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:53:39 +00:00
Julian Smart
f0edd8249f Removed Scanf, Scanfv
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@137 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:52:43 +00:00
Julian Smart
607d906178 Added more flags to resource.cpp, #ifdefed out ScanfV for Windows, some
grid typo fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@136 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:48:22 +00:00
Julian Smart
1c089c47f3 Cured problem introduced by LEAVE/ENTER OnIdle code; bugs in gauge sizing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@135 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:43:48 +00:00
Julian Smart
565215b26a Added wxCLIP_CHILDREN style (mainly for getting rid of flicker), other minor mods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@134 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:27:14 +00:00
Vadim Zeitlin
f54f3bffce attempt to clean up a little keyboard handling code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@133 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:25:07 +00:00
Vadim Zeitlin
1311c7a9bb wxCHECK/wxCHECK_RET changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@132 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:17:39 +00:00
Vadim Zeitlin
a539b39f6b wxCHECK change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@131 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:17:15 +00:00
Vadim Zeitlin
144833307d GetSelections() changed to work with wxArrayInt
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@130 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:09:38 +00:00
Vadim Zeitlin
1d7929284e now compiles with USE_XPM_IN_MSW on, added error messages if bitmap can't
be loaded/saved


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@129 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:07:55 +00:00
Vadim Zeitlin
8abf40fbb9 VC++ warning suppressed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@128 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:06:42 +00:00
Vadim Zeitlin
9efd3367c0 wxString::Scanf() removed because can't be implemented portably
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@127 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:04:23 +00:00
Vadim Zeitlin
e9c7dfb9b5 now compiles with USE_XPM_IN_MSW on
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@126 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:03:20 +00:00
Vadim Zeitlin
937d4f4d31 bug in SplitPath() corrected - now ".." handled correctly
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@125 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:58:31 +00:00
Vadim Zeitlin
7f17c6dbbf wxListbox::GetSelections() now takes a wxArrayInt instead of "int **"
(as under wxGTK)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@124 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:54:19 +00:00
Vadim Zeitlin
d736364315 now compiles with USE_XPM_IN_MSW on
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@123 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:53:24 +00:00
Vadim Zeitlin
0f03d24f30 Oops... just added wxString::Scanf() functions can't be implemented under
Windows. Removed.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@122 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:51:27 +00:00
Vadim Zeitlin
6a415c9a1f #include "wx/msw/notebook" added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@121 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:50:11 +00:00
Vadim Zeitlin
2283a22c2d wxLogWindow::GetOldLog() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@120 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:48:53 +00:00
Vadim Zeitlin
1db08b2baf wxCHECK macros slightly changed: wxCHECK( expr, rc ) now returns rc if
expr is FALSE and wxCHECK_RET( expr ) must be used in void functions.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@119 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:47:38 +00:00
Karsten Ballüder
5ebd1fb227 fixed #pragma
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@118 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 14:40:59 +00:00
Karsten Ballüder
1f0299c17d fixed #include paths to use local copies of png/gdk_imlib/zlib headers
fixed compiler warning in time.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@117 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 12:47:56 +00:00
Guilhem Lavaux
bdc6fff9ea * Added $(THREADS_LINK) to $(LINK_LIBS) so all programs can be linked.
* Updated the thread detected (pthread-0.7, pthread, pthreads)
* Added --without-threads to disable threads


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@116 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-20 10:25:12 +00:00
Vadim Zeitlin
9fd239ad61 put wxMessageBox() arguments in OnAssert() in the right order
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@115 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-19 15:55:51 +00:00
Karsten Ballüder
6367c8394c fixed stupid compiler warning
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@114 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-19 12:35:36 +00:00
Vadim Zeitlin
4bf58c62d2 changed the notebook control to use AddPage() interface (Julian's version
didn't work at all) andupdated the sample to work with it


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@113 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 16:59:18 +00:00
Julian Smart
5bfe9bbc65 Fixed SetSelection, GetSelection for Portrait/Landscape selection
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@112 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 14:01:07 +00:00
Karsten Ballüder
40a97c003c another typo fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@111 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 13:40:24 +00:00
Karsten Ballüder
46bada707d added notebook.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@110 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 13:26:19 +00:00
Karsten Ballüder
3fc5256f83 fixed wrong scanf() arguments
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@109 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 13:26:02 +00:00
Vadim Zeitlin
c8cfb486fb 1) Right(char ch) now returns the part of the string after the last
occurence of ch _without_ ch itself (like Left(char ch))
2) Added wxString::Scanf() and wxString::ScanfV()


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@108 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 13:20:42 +00:00
Vadim Zeitlin
b841e0e379 wxFileConfig bugs corrected (now the new entries belong to the right groups)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@107 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 13:07:58 +00:00
Guilhem Lavaux
82052affa7 * Hope this is the last bug fix in the wxThread merge ...
* configure updated
* some function added in utilsgtk.cpp (wxSleep, wxKill)
* wxThread sample v0.1


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@106 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-16 17:17:02 +00:00
Vadim Zeitlin
d1c9bbf64d "-1" index error in wxString::Before fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@105 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-16 12:41:33 +00:00
Guilhem Lavaux
8d31c13865 * Corrected #include "thread.h" => #include "wx/thread.h"
* Corrected the joystick.h detection stuff in configure.in


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@104 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-15 17:21:07 +00:00
Karsten Ballüder
f5bf3b9509 changed GetSelections() argument
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@103 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-15 12:06:39 +00:00
Julian Smart
8aadf22734 Experimental notebook API
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@102 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-15 09:21:45 +00:00
Julian Smart
38009d396d Corrected some problems I introduced, added tabevent.tex.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@101 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-15 07:57:40 +00:00
Vadim Zeitlin
b5f2afe541 wxNotebook interface (it may change!), implementation file is not yet
commited - I will do as soon as the interface is fixed


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@100 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 23:16:19 +00:00
Vadim Zeitlin
28bfeb7353 added notebook events: wxEVT_COMMAND_NOTEBOOK_PAGE_CHANG(ED|ING)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@99 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 23:13:36 +00:00
Vadim Zeitlin
ec845369d5 added ctor wxColour(unsigned long colRGB) and the corresponding Set()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@98 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 23:08:53 +00:00
Julian Smart
e5fb7191bb Added #define wxHelpController to help.h; added wxWinHelpController::Quit code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@97 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 20:53:26 +00:00
Julian Smart
89a51b2e38 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@96 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 20:52:08 +00:00
Julian Smart
fe604ccddc Various documentation additions and changes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@95 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 20:48:39 +00:00
Guilhem Lavaux
b89156b5db * Thread updates and cleanup (m_locked, MUTEX_UNLOCKED added)
* Updated the documentation


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@94 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 15:28:28 +00:00
Julian Smart
ee4f8c2af9 const/void changes in thread, tabctrl and wave files; wxTabCtrl::InsertItem
now returns bool not int.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@93 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 12:15:13 +00:00
Julian Smart
eaaa6a06a2 Changed documentation const convention for non-objects; added some manual files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@92 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 12:11:50 +00:00
Julian Smart
4efd74436a Corrected missing pipe in treectrl.h, wxOK->wxID_OK in wxGetTextFromUser,
no offsets in 2 functions in wxDC


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@91 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 08:53:46 +00:00
Julian Smart
40e1a9c025 Corrected dataobj.h/.cpp, corrected listbox to use non-integral height
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@90 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-13 17:09:59 +00:00
Guilhem Lavaux
7c351dad14 * Posix/SGI/No threads added
* Updated configure.in file (Threads and Joystick detection)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@89 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-13 17:02:45 +00:00
Julian Smart
d3c2365922 Added include/wx/joystick.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@88 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-13 10:12:57 +00:00
Julian Smart
101ceb40b1 Added GTK/Linux joystick class (Guilhem Lavaux)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@87 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-13 10:11:58 +00:00
Julian Smart
43d811ea55 Correction to dnd.h; EVT_MOUSE_EVENTS now includes LEAVE/ENTER events;
Windows LEAVE/ENTER events now work


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@86 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-13 10:09:13 +00:00
Vadim Zeitlin
3078c3a641 in wxOnAssert() abort() replaced with raise(SIGTRAP) (Unix only)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@85 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-12 15:41:02 +00:00
Vadim Zeitlin
6a6d4eedf8 added support of multiple-selection listboxes, GetSelections() now works.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@84 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-12 14:56:04 +00:00
Vadim Zeitlin
2ad3a34ecc wxTextCtrl::WriteText() now adds it at the end and not 1 position before
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@83 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-10 17:04:04 +00:00
Vadim Zeitlin
329b53d8ff testing CVS notifications
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@82 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-10 11:11:20 +00:00
Vadim Zeitlin
4516e6c444 wxLogWindow ctor changed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@81 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-10 10:18:51 +00:00
Vadim Zeitlin
f42d26252d wxLogWindow is now not a top-level frame, so it doesn't prevent the app from
being closed


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@80 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-09 17:35:25 +00:00
Vadim Zeitlin
b59650beee wxTempFile bug corrected: the temp file is now created in the same dir
as the original one, so that rename() always succeeds


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@79 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-09 13:14:20 +00:00
Vadim Zeitlin
e51c494324 Bool changed to bool
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-08 12:41:15 +00:00
Julian Smart
b18268d34b Notes about implementing EVT_LEAVE_WINDOW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-08 11:48:29 +00:00
Karsten Ballüder
c03b8ea8cd fixed NULL problem
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-08 11:37:30 +00:00
Vadim Zeitlin
05fafecd1a Bool replaced by bool
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-05 14:46:58 +00:00
Vadim Zeitlin
bc7665d447 Bool replaced by bool (I hope I got it right this time!)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-05 14:46:17 +00:00
Julian Smart
1889c7c9b7 Small mods to manual
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-05 07:45:17 +00:00
Robert Roebling
112892b918 GTK
- added docview sample, doesn't work :-(
   - changed wxBmpButton callback name


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-04 16:08:47 +00:00
Julian Smart
948041079c Modified wx.hpj for new directory structure; books.gif is now transparent
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-03 19:40:14 +00:00
Robert Roebling
53010e52d3 GTK
combobox
    idle handling
    makefile fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-03 19:06:13 +00:00
Vadim Zeitlin
884d770ab5 bug preventing compilation of wxLogGui under !Windows corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-03 16:34:39 +00:00
Julian Smart
39e6cbe2d2 Resubmitted binary files that may been corrupted
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-02 20:25:34 +00:00
Robert Roebling
53b2867549 GTK
- wxNotebook added
    - wxTabCtrl removed
    - added USE_WXCONFIG option
    - minor compile fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-02 19:04:33 +00:00
Vadim Zeitlin
cd71293400 added #if USE_WXCONFIG check (TODO: add configure switch for it)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-02 13:23:24 +00:00
Vadim Zeitlin
b0cf2597e2 wxDataObject now defined in defs.h and not here
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-31 00:09:52 +00:00
Vadim Zeitlin
6a0eb96b27 missing #endif
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-31 00:08:01 +00:00
Vadim Zeitlin
c6020b7d71 wxDataFormat typedef added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-31 00:00:11 +00:00
Vadim Zeitlin
75c6c54531 helper file for WX_DEFINE_LIST: dynamic list implementation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-30 23:42:51 +00:00
Julian Smart
a85586fd22 Removed Deselect function.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-30 17:21:21 +00:00
Robert Roebling
7f4dc78d35 Same as last one..
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-30 17:11:51 +00:00
Robert Roebling
1c005ff76d GTK:
Added wxTabCtrl
    Work on wxEventhandler (delete clientdata)
            wxChoice (derive from wxControl)
            wxTextCtrl (init with text)
    Added sample for tabctrl (and more)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-30 17:10:15 +00:00
Robert Roebling
1a56f55c02 GTK
moved main() to app.cpp
  added wxGauge
  added wxStaticBitmap


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-28 22:05:55 +00:00
Julian Smart
6f65e33794 Updates from Chris Breeze
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-28 19:54:07 +00:00
Robert Roebling
151ccd11af GTK wxBitmapButton added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-28 17:44:04 +00:00
Julian Smart
ef77f91e5b #ifdefed out a typedef not appropriate to MSW; added SetSelection to choice dialog
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-28 11:13:25 +00:00
Vadim Zeitlin
4075e9a407 cleaned code a bit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:41:55 +00:00
Vadim Zeitlin
269a5a34a6 wxDataObject and wxDropSource implementations
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:38:26 +00:00
Vadim Zeitlin
19454fa092 registry based implementation of wxConfig (wxRegConfig)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:37:21 +00:00
Vadim Zeitlin
195896c792 1) now associated drop target is deleted (memory/resource leak corrected)
2) added wxCHECK( hWnd != NULL ) to wxAssociateWinWithHandle


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:36:40 +00:00
Vadim Zeitlin
d8b98f009e removed compilation warning about "switch with default but no case" (no
real changes)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:34:01 +00:00
Vadim Zeitlin
0b1c5a6cba many bugs (including major one in DeleteSelf) corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:32:14 +00:00
Vadim Zeitlin
c1888b05b0 spurious "(uint)" cast which was causing compilation warnings removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:30:50 +00:00
Vadim Zeitlin
c54f78a253 1) Added call to wxLog::Flush() to wxApp::OnIdle()
2) Last active log target is now deleted in wxApp::CleanUp()


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:29:56 +00:00
Vadim Zeitlin
1737035fb8 wxDataObject and wxDropSource classes for (more) d&d support
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:24:11 +00:00
Vadim Zeitlin
3bd2972366 option USE_WXCONFIG (default value: 1) added which enables compilation of
wxConfig


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:20:27 +00:00
Vadim Zeitlin
2dc7764675 function HasValue() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:18:16 +00:00
Vadim Zeitlin
45c2881542 declaration of registry based implementation of wxConfig (wxRegConfig)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:07:33 +00:00
Vadim Zeitlin
4e066dd257 wxApp::CreateConfig() only defined #if USE_WXCONFIG
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:05:10 +00:00
Vadim Zeitlin
aeaa5b9aad no changes (cvs wierdness...)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 22:52:51 +00:00
Vadim Zeitlin
cdb7168d80 no changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 22:50:55 +00:00
Julian Smart
6b0eb19fe8 Misc changes for DOS compatibility, plus added wxApp::CreateConfig
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 13:56:59 +00:00
Julian Smart
f0b3249bf7 Changes to help with Win16 compilation.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 09:37:56 +00:00
Karsten Ballüder
bac0b3d573 bug hunting in the repository
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 16:36:38 +00:00
Vadim Zeitlin
6a06dd8df2 new compile option added: USE_WXCONFIG. If it's 1, wxApp has a virtual
wxConfig *CreateConfig() function which can be overloaded to create a global
config object (current implementation simply returns NULL for now).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:15:22 +00:00
Vadim Zeitlin
1fa9e86daf stray '^M' removed (egcs doesn't like them)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:13:53 +00:00
Vadim Zeitlin
9ef3052c91 1) log leves are now global wxLOG_ prefixed constants and not wxConfig::enum
members
2) another variant of wxLogTrace() takes the trace level as argument: this
   allows to filter trace messages from different sources (see wxTraceXXX
   constants)
3) wxLogWindow class added: opens a debug frame which collects all log
   messages


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:11:46 +00:00
Vadim Zeitlin
9d8046f6fe inline wxGetTranslation() moved so it's not called before being defined
(thanks to egcs for the warning)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:08:50 +00:00
Vadim Zeitlin
1f905dc575 wxFileConfig now has it's own header, the config file name may be given to
it's ctor (and not hard coded). Static wxFileConfig methods
Get{Global|Local}FileName can be used to retrieve the standard config file
path.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:07:48 +00:00
Vadim Zeitlin
61b027446e added write_append mode to wxFile, implemented eof() for Unix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:05:56 +00:00
Vadim Zeitlin
99b55eb078 added "\n" at the end of file to silent egcs warnings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:04:03 +00:00
Vadim Zeitlin
855e92a8d9 added "const char *Read()" returning pointer to statis buffer (in wxConfig
implementation at least), code common to wxRegConfig and wxFileConfig moved
to config.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:02:58 +00:00
Vadim Zeitlin
824e935add mistype: #ifdef __GTK corrected (#ifdef __GTK__ now)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 14:58:05 +00:00
Julian Smart
efad39f997 Added some more missing files.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 20:03:07 +00:00
Julian Smart
457814b5aa *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 19:57:05 +00:00
Robert Roebling
69d2886dfe Added dynamic events sample.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 19:08:19 +00:00
Julian Smart
f6bf3066bb *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 17:09:19 +00:00
Julian Smart
99025f6e18 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 11:48:57 +00:00
Julian Smart
e1d1da03d5 In SetString, added test for owner draw style to cure crash.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 10:31:40 +00:00
Julian Smart
58c55d1f77 Changed library paths for new structure
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 08:08:11 +00:00
Julian Smart
6e5ae05172 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 20:42:20 +00:00
Julian Smart
26a87b69a0 App declarations modified; cursor was corrupt; needed to add PostScript-related variable.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 19:39:05 +00:00
Julian Smart
10b959e372 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 15:02:02 +00:00
Julian Smart
aad5220b82 Minor changes to make files compile (return values); added resource.cpp.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@17 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 14:34:35 +00:00
Julian Smart
145aa40682 Added resource.h, missing from archive.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 14:33:06 +00:00
Julian Smart
1ff121bd9e Added sample makefile.nt, makefile.g95.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 14:22:00 +00:00
Julian Smart
197e66da2c *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 14:19:36 +00:00
Robert Roebling
fe71f65c0f Add support for dynamic event tables
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 12:31:14 +00:00
Robert Roebling
abe1d62edf *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 10:46:43 +00:00
Karsten Ballüder
a660d684ed I've now added the documentation files.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-20 14:25:30 +00:00
Karsten Ballüder
bbf1f0e5cf now MSW stuff is complete
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-20 14:21:00 +00:00
Karsten Ballüder
2bda0e1738 added some wxMSW stuff
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-20 14:12:05 +00:00
32 changed files with 787 additions and 12502 deletions

148
include/wx/list.h Normal file
View File

@@ -0,0 +1,148 @@
/////////////////////////////////////////////////////////////////////////////
// Name: list.h
// Purpose: wxList, wxStringList classes
// Author: Julian Smart
// Modified by:
// Created: 29/01/98
// RCS-ID: $Id$
// Copyright: (c) 1998 Julian Smart
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_LISTH__
#define _WX_LISTH__
#ifdef __GNUG__
#pragma interface "list.h"
#endif
#include "wx/defs.h"
#include "wx/object.h"
class WXDLLEXPORT wxList;
#define wxKEY_NONE 0
#define wxKEY_INTEGER 1
#define wxKEY_STRING 2
class WXDLLEXPORT wxNode: public wxObject
{
DECLARE_DYNAMIC_CLASS(wxNode)
private:
wxObject *data;
wxNode *next;
wxNode *previous;
public:
wxList *list;
// Optional key stuff
union
{
long integer;
char *string;
} key;
wxNode(wxList *the_list = (wxList *) NULL, wxNode *last_one = (wxNode *) NULL, wxNode *next_one = (wxNode *) NULL, wxObject *object = (wxObject *) NULL);
wxNode(wxList *the_list, wxNode *last_one, wxNode *next_one,
wxObject *object, long the_key);
wxNode(wxList *the_list, wxNode *last_one, wxNode *next_one,
wxObject *object, const char *the_key);
~wxNode(void);
inline wxNode *Next(void) const { return next; }
inline wxNode *Previous(void) const { return previous; }
inline wxObject *Data(void) const { return (wxObject *)data; }
inline void SetData(wxObject *the_data) { data = the_data; }
};
// type of compare function for list sort operation (as in 'qsort')
typedef int (*wxSortCompareFunction)(const void *elem1, const void *elem2);
typedef int (*wxListIterateFunction)(wxObject *o);
class WXDLLEXPORT wxList: public wxObject
{
DECLARE_DYNAMIC_CLASS(wxList)
public:
int n;
int destroy_data;
wxNode *first_node;
wxNode *last_node;
unsigned int key_type;
wxList(void);
wxList(const unsigned int the_key_type);
wxList(int N, wxObject *Objects[]);
wxList(wxObject *object, ...);
~wxList(void);
inline int Number(void) const { return n; }
inline int GetCount(void) const { return n; }
// Append to end of list
wxNode *Append(wxObject *object);
// Insert at front of list
wxNode *Insert(wxObject *object);
// Insert before given node
wxNode *Insert(wxNode *position, wxObject *object);
// Keyed append
wxNode *Append(long key, wxObject *object);
wxNode *Append(const char *key, wxObject *object);
bool DeleteNode(wxNode *node);
bool DeleteObject(wxObject *object); // Finds object pointer and
// deletes node (and object if
// DeleteContents is on)
virtual void Clear(void); // Delete all nodes
inline wxNode *First(void) const { return first_node; }
inline wxNode *Last(void) const { return last_node; }
wxNode *Nth(int i) const; // nth node counting from 0
// Keyed search
virtual wxNode *Find(long key) const;
virtual wxNode *Find(const char *key) const;
virtual wxNode *Member(wxObject *object) const;
inline void DeleteContents(int destroy) { destroy_data = destroy; }
// Instruct it to destroy user data
// when deleting nodes
// this function allows the sorting of arbitrary lists by giving
// a function to compare two list elements.
void Sort(const wxSortCompareFunction compfunc);
wxObject *FirstThat(wxListIterateFunction func);
void ForEach(wxListIterateFunction func);
wxObject *LastThat(wxListIterateFunction func);
};
// String list class. N.B. this always copies strings
// with Add and deletes them itself.
class WXDLLEXPORT wxStringList: public wxList
{
DECLARE_DYNAMIC_CLASS(wxStringList)
public:
wxStringList(void);
wxStringList(const wxStringList& list);
wxStringList(const char *first ...);
~wxStringList(void);
virtual wxNode *Add(const char *s);
virtual void Delete(const char *s);
virtual char **ListToArray(bool new_copies = FALSE) const;
virtual void Sort(void);
virtual bool Member(const char *s) const;
virtual void Clear(void);
void operator= (const wxStringList& list);
char* operator[] (int i) const;
};
#endif
// _WX_LISTH__

639
src/common/list.cpp Normal file
View File

@@ -0,0 +1,639 @@
/////////////////////////////////////////////////////////////////////////////
// Name: list.cpp
// Purpose: wxList implementation
// Author: Julian Smart
// Modified by:
// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart and Markus Holzem
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma implementation "list.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#ifndef WX_PRECOMP
#include "wx/defs.h"
#include "wx/list.h"
#include "wx/utils.h"
#include <wx/intl.h>
#endif
// Sun CC compatibility (interference with xview/pkg.h, apparently...)
#if defined(SUN_CC) && defined(__XVIEW__)
#undef va_start
#undef va_end
#undef va_arg
#undef va_list
#endif
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxNode, wxObject)
IMPLEMENT_DYNAMIC_CLASS(wxList, wxObject)
IMPLEMENT_DYNAMIC_CLASS(wxStringList, wxList)
#endif
wxNode::wxNode (wxList * the_list, wxNode * last_one, wxNode * next_one,
wxObject * object)
{
data = object;
previous = last_one;
next = next_one;
list = the_list;
key.string = (char *) NULL;
if (previous)
previous->next = this;
if (next)
next->previous = this;
}
// Keyed constructor
wxNode::wxNode (wxList * the_list, wxNode * last_one, wxNode * next_one,
wxObject * object, long the_key)
{
data = object;
previous = last_one;
next = next_one;
list = the_list;
key.integer = the_key;
if (previous)
previous->next = this;
if (next)
next->previous = this;
}
wxNode::wxNode (wxList * the_list, wxNode * last_one, wxNode * next_one,
wxObject * object, const char *the_key)
{
data = object;
previous = last_one;
next = next_one;
list = the_list;
key.string = copystring (the_key);
if (previous)
previous->next = this;
if (next)
next->previous = this;
}
wxNode::~wxNode (void)
{
if (list)
list->n--;
if (list && list->destroy_data)
delete data;
if (list && list->key_type == wxKEY_STRING && key.string)
delete[]key.string;
// Make next node point back to the previous node from here
if (next)
next->previous = previous;
else if (list)
// If there's a new end of list (deleting the last one)
// make sure the list knows about it.
list->last_node = previous;
// Make the previous node point to the next node from here
if (previous)
previous->next = next;
// Or if no previous node (start of list), make sure list points at
// the next node which becomes the first!.
else if (list)
list->first_node = next;
}
wxList::wxList (void)
{
first_node = (wxNode *) NULL;
last_node = (wxNode *) NULL;
n = 0;
destroy_data = 0;
key_type = wxKEY_NONE;
}
wxList::wxList (int N, wxObject * Objects[])
{
wxNode *last = (wxNode *) NULL;
int i;
for (i = 0; i < N; i++)
{
wxNode *next = new wxNode (this, last, (wxNode *) NULL, Objects[i]);
last = next;
if (i == 0)
first_node = next;
}
last_node = last;
n = N;
key_type = wxKEY_NONE;
}
wxList::wxList (const unsigned int the_key_type)
{
n = 0;
destroy_data = 0;
first_node = (wxNode *) NULL;
last_node = (wxNode *) NULL;
key_type = the_key_type;
}
// Variable argument list, terminated by a zero
wxList::wxList (wxObject * first_one...)
{
// #ifndef __SGI__
va_list ap;
va_start (ap, first_one);
wxNode *last = new wxNode (this, (wxNode *) NULL, (wxNode *) NULL, first_one);
first_node = last;
n = 1;
for (;;)
{
wxObject *object = va_arg (ap, wxObject *);
// if (object == NULL) // Doesn't work in Windows -- segment is non-zero for NULL!
#ifdef __WXMSW__
if ((int) object == 0)
#else
if ((long) object == 0)
#endif
break;
else
{
wxNode *node = new wxNode (this, last, (wxNode *) NULL, object);
last = node;
n++;
}
}
last_node = last;
va_end (ap);
destroy_data = 0;
key_type = wxKEY_NONE;
/*
#else
fprintf (stderr, "Error: cannot use variable-argument functions on SGI!\n");
#endif
*/
}
wxList::~wxList (void)
{
wxNode *each = first_node;
while (each)
{
wxNode *next = each->Next ();
delete each;
each = next;
}
}
wxNode *wxList::Append(wxObject *object)
{
wxNode *node = new wxNode(this, last_node, (wxNode *) NULL, object);
if (!first_node)
first_node = node;
last_node = node;
n ++;
return node;
}
wxNode *wxList::Nth (int i) const
{
int j = 0;
for (wxNode * current = First (); current; current = current->Next ())
{
if (j++ == i)
return current;
}
return (wxNode *) NULL; // No such element
}
wxNode *wxList::Find (long key) const
{
wxNode *current = First();
while (current)
{
if (current->key.integer == key)
return current;
current = current->Next();
}
return (wxNode *) NULL; // Not found!
}
wxNode *wxList::Find (const char *key) const
{
wxNode *current = First();
while (current)
{
if (!current->key.string)
{
wxFatalError (_("wxList: string key not present, probably did not Append correctly!"));
break;
}
if (strcmp (current->key.string, key) == 0)
return current;
current = current->Next();
}
return (wxNode *) NULL; // Not found!
}
wxNode *wxList::Member (wxObject * object) const
{
for (wxNode * current = First (); current; current = current->Next ())
{
wxObject *each = current->Data ();
if (each == object)
return current;
}
return (wxNode *) NULL;
}
bool wxList::DeleteNode (wxNode * node)
{
if (node)
{
delete node;
return TRUE;
}
return FALSE;
}
bool wxList::DeleteObject (wxObject * object)
{
// Search list for object
for (wxNode * current = first_node; current; current = current->Next ())
{
if (current->Data () == object)
{
delete current;
return TRUE;
}
}
return FALSE; // Did not find the object
}
// Insert new node at front of list
wxNode *wxList::Insert (wxObject * object)
{
wxNode *node = new wxNode (this, (wxNode *) NULL, First (), object);
first_node = node;
if (!(node->Next ()))
last_node = node;
n++;
return node;
}
// Insert new node before given node.
wxNode *wxList::Insert (wxNode * position, wxObject * object)
{
wxNode *prev = (wxNode *) NULL;
if (position)
prev = position->Previous ();
wxNode *node = new wxNode (this, prev, position, object);
if (!first_node)
{
first_node = node;
last_node = node;
}
if (!prev)
first_node = node;
n++;
return node;
}
// Keyed append
wxNode *wxList::Append (long key, wxObject * object)
{
wxNode *node = new wxNode (this, last_node, (wxNode *) NULL, object, key);
if (!first_node)
first_node = node;
last_node = node;
n++;
return node;
}
wxNode *wxList::Append (const char *key, wxObject * object)
{
wxNode *node = new wxNode (this, last_node, (wxNode *) NULL, object, key);
if (!first_node)
first_node = node;
last_node = node;
n++;
return node;
}
void wxList::Clear (void)
{
wxNode *current = first_node;
while (current)
{
wxNode *next = current->Next ();
delete current;
current = next;
}
first_node = (wxNode *) NULL;
last_node = (wxNode *) NULL;
n = 0;
}
//Executes function F with all items present in the list
void wxList::ForEach(wxListIterateFunction F)
{
wxNode *each = first_node;
while (each)
{ (*F)( each->Data ());
each = each->Next();
}
}
// Returns a pointer to the item which returns TRUE with function F
// or NULL if no such item found
wxObject *wxList::FirstThat(wxListIterateFunction F)
{
wxNode *each = first_node;
while (each)
{ if ((*F)( each->Data ())) return each->Data();
each = each->Next();
}
return (wxNode *) NULL;
}
// Like FirstThat, but proceeds from the end backward
wxObject *wxList::LastThat(wxListIterateFunction F)
{
wxNode *each = last_node;
while (each)
{ if ((*F)( each->Data ())) return each->Data();
each = each->Previous();
}
return (wxNode *) NULL;
}
// (stefan.hammes@urz.uni-heidelberg.de)
//
// function for sorting lists. the concept is borrowed from 'qsort'.
// by giving a sort function, arbitrary lists can be sorted.
// method:
// - put wxObject pointers into an array
// - sort the array with qsort
// - put back the sorted wxObject pointers into the list
//
// CAVE: the sort function receives pointers to wxObject pointers (wxObject **),
// so dereference right!
// EXAMPLE:
// int listcompare(const void *arg1, const void *arg2)
// {
// return(compare(**(wxString **)arg1,
// **(wxString **)arg2));
// }
//
// void main()
// {
// wxList list;
//
// list.Append(new wxString("DEF"));
// list.Append(new wxString("GHI"));
// list.Append(new wxString("ABC"));
// list.Sort(listcompare);
// }
void wxList::Sort(const wxSortCompareFunction compfunc)
{
// allocate an array for the wxObject pointers of the list
const size_t num = Number();
wxObject **objArray = new wxObject *[num];
wxObject **objPtr = objArray;
// go through the list and put the pointers into the array
wxNode *node = First();
while(node!=NULL){
*objPtr++ = node->Data();
node = node->Next();
}
// sort the array
qsort((void *)objArray,num,sizeof(wxObject *),compfunc);
// put the sorted pointers back into the list
objPtr = objArray;
node = First();
while(node!=NULL){
node->SetData(*objPtr++);
node = node->Next();
}
// free the array
delete[] objArray;
}
/*
* String list
*
*/
wxStringList::wxStringList (void):
wxList ()
{
}
wxStringList::wxStringList (const wxStringList& list)
{
(*this) = list;
}
// Variable argument list, terminated by a zero
// Makes new storage for the strings
wxStringList::wxStringList (const char *first...)
{
// #ifndef __SGI__
n = 0;
destroy_data = 0;
key_type = wxKEY_NONE;
first_node = (wxNode *) NULL;
last_node = (wxNode *) NULL;
if (!first)
return;
va_list ap;
va_start (ap, first);
wxNode *last = new wxNode (this, (wxNode *) NULL, (wxNode *) NULL, (wxObject *) copystring (first));
first_node = last;
n = 1;
for (;;)
{
char *s = va_arg (ap, char *);
// if (s == NULL)
#ifdef __WXMSW__
if ((int) s == 0)
#else
if ((long) s == 0)
#endif
break;
else
{
wxNode *node = new wxNode (this, last, (wxNode *) NULL, (wxObject *) copystring (s));
last = node;
n++;
}
}
last_node = last;
va_end (ap);
/*
#else
fprintf (stderr, "Error: cannot use variable-argument functions on SGI!\n");
#endif
*/
}
wxStringList::~wxStringList (void)
{
Clear();
}
void wxStringList::Clear(void)
{
wxNode *each = First();
while (each)
{
char *s = (char *) each->Data ();
delete[]s;
wxNode *next = each->Next ();
delete each;
each = next;
}
wxList::Clear();
}
wxNode *wxStringList::Add (const char *s)
{
return Append ((wxObject *) (copystring (s)));
}
void wxStringList::Delete (const char *s)
{
for (wxNode * node = First (); node; node = node->Next ())
{
char *string = (char *) node->Data ();
if (string == s || strcmp (string, s) == 0)
{
delete[]string;
delete node;
break; // Done!
}
} // for
}
// Only makes new strings if arg is TRUE
char **wxStringList::ListToArray (bool new_copies) const
{
char **string_array = new char *[Number ()];
wxNode *node = First ();
int i;
for (i = 0; i < n; i++)
{
char *s = (char *) node->Data ();
if (new_copies)
string_array[i] = copystring (s);
else
string_array[i] = s;
node = node->Next ();
}
return string_array;
}
static int
wx_comparestrings (const void *arg1, const void *arg2)
{
char **s1 = (char **) arg1;
char **s2 = (char **) arg2;
return strcmp (*s1, *s2);
}
// Sort a list of strings - deallocates old nodes, allocates new
void wxStringList::Sort (void)
{
size_t N = n;
char **array = new char *[N];
size_t i = 0;
for (wxNode * node = First (); node; node = node->Next ())
array[i++] = (char *) node->Data ();
qsort (array, N, sizeof (char *), wx_comparestrings);
Clear ();
for (i = 0; i < N; i++)
Append ((wxObject *) (array[i]));
delete[]array;
}
// Checks whether s is a member of the list
bool wxStringList::Member (const char *s) const
{
for (wxNode * node = First (); node; node = node->Next ())
{
const char *s1 = (const char *) node->Data ();
if (s == s1 || strcmp (s, s1) == 0)
return TRUE;
}
return FALSE;
}
void wxStringList::operator= (const wxStringList& list)
{
Clear();
wxNode *node = list.First();
while (node)
{
char *s = (char *) node->Data ();
Add(s);
node = node->Next();
}
}
char* wxStringList::operator[] (int i) const
{
wxASSERT_MSG( (i < Number()), "Invalid index for wxStringList" );
return (char*) (Nth(i)->Data());
}

View File

@@ -1,722 +0,0 @@
ChangeLog file for zlib
Changes in 1.2.1 (17 November 2003)
- Remove a tab in contrib/gzappend/gzappend.c
- Update some interfaces in contrib for new zlib functions
- Update zlib version number in some contrib entries
- Add Windows CE definition for ptrdiff_t in zutil.h [Mai, Truta]
- Support shared libraries on Hurd and KFreeBSD [Brown]
- Fix error in NO_DIVIDE option of adler32.c
Changes in 1.2.0.8 (4 November 2003)
- Update version in contrib/delphi/ZLib.pas and contrib/pascal/zlibpas.pas
- Add experimental NO_DIVIDE #define in adler32.c
- Possibly faster on some processors (let me know if it is)
- Correct Z_BLOCK to not return on first inflate call if no wrap
- Fix strm->data_type on inflate() return to correctly indicate EOB
- Add deflatePrime() function for appending in the middle of a byte
- Add contrib/gzappend for an example of appending to a stream
- Update win32/DLL_FAQ.txt [Truta]
- Delete Turbo C comment in README [Truta]
- Improve some indentation in zconf.h [Truta]
- Fix infinite loop on bad input in configure script [Church]
- Fix gzeof() for concatenated gzip files [Johnson]
- Add example to contrib/visual-basic.txt [Michael B.]
- Add -p to mkdir's in Makefile.in [vda]
- Fix configure to properly detect presence or lack of printf functions
- Add AS400 support [Monnerat]
- Add a little Cygwin support [Wilson]
Changes in 1.2.0.7 (21 September 2003)
- Correct some debug formats in contrib/infback9
- Cast a type in a debug statement in trees.c
- Change search and replace delimiter in configure from % to # [Beebe]
- Update contrib/untgz to 0.2 with various fixes [Truta]
- Add build support for Amiga [Nikl]
- Remove some directories in old that have been updated to 1.2
- Add dylib building for Mac OS X in configure and Makefile.in
- Remove old distribution stuff from Makefile
- Update README to point to DLL_FAQ.txt, and add comment on Mac OS X
- Update links in README
Changes in 1.2.0.6 (13 September 2003)
- Minor FAQ updates
- Update contrib/minizip to 1.00 [Vollant]
- Remove test of gz functions in example.c when GZ_COMPRESS defined [Truta]
- Update POSTINC comment for 68060 [Nikl]
- Add contrib/infback9 with deflate64 decoding (unsupported)
- For MVS define NO_vsnprintf and undefine FAR [van Burik]
- Add pragma for fdopen on MVS [van Burik]
Changes in 1.2.0.5 (8 September 2003)
- Add OF to inflateBackEnd() declaration in zlib.h
- Remember start when using gzdopen in the middle of a file
- Use internal off_t counters in gz* functions to properly handle seeks
- Perform more rigorous check for distance-too-far in inffast.c
- Add Z_BLOCK flush option to return from inflate at block boundary
- Set strm->data_type on return from inflate
- Indicate bits unused, if at block boundary, and if in last block
- Replace size_t with ptrdiff_t in crc32.c, and check for correct size
- Add condition so old NO_DEFLATE define still works for compatibility
- FAQ update regarding the Windows DLL [Truta]
- INDEX update: add qnx entry, remove aix entry [Truta]
- Install zlib.3 into mandir [Wilson]
- Move contrib/zlib_dll_FAQ.txt to win32/DLL_FAQ.txt; update [Truta]
- Adapt the zlib interface to the new DLL convention guidelines [Truta]
- Introduce ZLIB_WINAPI macro to allow the export of functions using
the WINAPI calling convention, for Visual Basic [Vollant, Truta]
- Update msdos and win32 scripts and makefiles [Truta]
- Export symbols by name, not by ordinal, in win32/zlib.def [Truta]
- Add contrib/ada [Anisimkov]
- Move asm files from contrib/vstudio/vc70_32 to contrib/asm386 [Truta]
- Rename contrib/asm386 to contrib/masmx86 [Truta, Vollant]
- Add contrib/masm686 [Truta]
- Fix offsets in contrib/inflate86 and contrib/masmx86/inffas32.asm
[Truta, Vollant]
- Update contrib/delphi; rename to contrib/pascal; add example [Truta]
- Remove contrib/delphi2; add a new contrib/delphi [Truta]
- Avoid inclusion of the nonstandard <memory.h> in contrib/iostream,
and fix some method prototypes [Truta]
- Fix the ZCR_SEED2 constant to avoid warnings in contrib/minizip
[Truta]
- Avoid the use of backslash (\) in contrib/minizip [Vollant]
- Fix file time handling in contrib/untgz; update makefiles [Truta]
- Update contrib/vstudio/vc70_32 to comply with the new DLL guidelines
[Vollant]
- Remove contrib/vstudio/vc15_16 [Vollant]
- Rename contrib/vstudio/vc70_32 to contrib/vstudio/vc7 [Truta]
- Update README.contrib [Truta]
- Invert the assignment order of match_head and s->prev[...] in
INSERT_STRING [Truta]
- Compare TOO_FAR with 32767 instead of 32768, to avoid 16-bit warnings
[Truta]
- Compare function pointers with 0, not with NULL or Z_NULL [Truta]
- Fix prototype of syncsearch in inflate.c [Truta]
- Introduce ASMINF macro to be enabled when using an ASM implementation
of inflate_fast [Truta]
- Change NO_DEFLATE to NO_GZCOMPRESS [Truta]
- Modify test_gzio in example.c to take a single file name as a
parameter [Truta]
- Exit the example.c program if gzopen fails [Truta]
- Add type casts around strlen in example.c [Truta]
- Remove casting to sizeof in minigzip.c; give a proper type
to the variable compared with SUFFIX_LEN [Truta]
- Update definitions of STDC and STDC99 in zconf.h [Truta]
- Synchronize zconf.h with the new Windows DLL interface [Truta]
- Use SYS16BIT instead of __32BIT__ to distinguish between
16- and 32-bit platforms [Truta]
- Use far memory allocators in small 16-bit memory models for
Turbo C [Truta]
- Add info about the use of ASMV, ASMINF and ZLIB_WINAPI in
zlibCompileFlags [Truta]
- Cygwin has vsnprintf [Wilson]
- In Windows16, OS_CODE is 0, as in MSDOS [Truta]
- In Cygwin, OS_CODE is 3 (Unix), not 11 (Windows32) [Wilson]
Changes in 1.2.0.4 (10 August 2003)
- Minor FAQ updates
- Be more strict when checking inflateInit2's windowBits parameter
- Change NO_GUNZIP compile option to NO_GZIP to cover deflate as well
- Add gzip wrapper option to deflateInit2 using windowBits
- Add updated QNX rule in configure and qnx directory [Bonnefoy]
- Make inflate distance-too-far checks more rigorous
- Clean up FAR usage in inflate
- Add casting to sizeof() in gzio.c and minigzip.c
Changes in 1.2.0.3 (19 July 2003)
- Fix silly error in gzungetc() implementation [Vollant]
- Update contrib/minizip and contrib/vstudio [Vollant]
- Fix printf format in example.c
- Correct cdecl support in zconf.in.h [Anisimkov]
- Minor FAQ updates
Changes in 1.2.0.2 (13 July 2003)
- Add ZLIB_VERNUM in zlib.h for numerical preprocessor comparisons
- Attempt to avoid warnings in crc32.c for pointer-int conversion
- Add AIX to configure, remove aix directory [Bakker]
- Add some casts to minigzip.c
- Improve checking after insecure sprintf() or vsprintf() calls
- Remove #elif's from crc32.c
- Change leave label to inf_leave in inflate.c and infback.c to avoid
library conflicts
- Remove inflate gzip decoding by default--only enable gzip decoding by
special request for stricter backward compatibility
- Add zlibCompileFlags() function to return compilation information
- More typecasting in deflate.c to avoid warnings
- Remove leading underscore from _Capital #defines [Truta]
- Fix configure to link shared library when testing
- Add some Windows CE target adjustments [Mai]
- Remove #define ZLIB_DLL in zconf.h [Vollant]
- Add zlib.3 [Rodgers]
- Update RFC URL in deflate.c and algorithm.txt [Mai]
- Add zlib_dll_FAQ.txt to contrib [Truta]
- Add UL to some constants [Truta]
- Update minizip and vstudio [Vollant]
- Remove vestigial NEED_DUMMY_RETURN from zconf.in.h
- Expand use of NO_DUMMY_DECL to avoid all dummy structures
- Added iostream3 to contrib [Schwardt]
- Replace rewind() with fseek() for WinCE [Truta]
- Improve setting of zlib format compression level flags
- Report 0 for huffman and rle strategies and for level == 0 or 1
- Report 2 only for level == 6
- Only deal with 64K limit when necessary at compile time [Truta]
- Allow TOO_FAR check to be turned off at compile time [Truta]
- Add gzclearerr() function [Souza]
- Add gzungetc() function
Changes in 1.2.0.1 (17 March 2003)
- Add Z_RLE strategy for run-length encoding [Truta]
- When Z_RLE requested, restrict matches to distance one
- Update zlib.h, minigzip.c, gzopen(), gzdopen() for Z_RLE
- Correct FASTEST compilation to allow level == 0
- Clean up what gets compiled for FASTEST
- Incorporate changes to zconf.in.h [Vollant]
- Refine detection of Turbo C need for dummy returns
- Refine ZLIB_DLL compilation
- Include additional header file on VMS for off_t typedef
- Try to use _vsnprintf where it supplants vsprintf [Vollant]
- Add some casts in inffast.c
- Enchance comments in zlib.h on what happens if gzprintf() tries to
write more than 4095 bytes before compression
- Remove unused state from inflateBackEnd()
- Remove exit(0) from minigzip.c, example.c
- Get rid of all those darn tabs
- Add "check" target to Makefile.in that does the same thing as "test"
- Add "mostlyclean" and "maintainer-clean" targets to Makefile.in
- Update contrib/inflate86 [Anderson]
- Update contrib/testzlib, contrib/vstudio, contrib/minizip [Vollant]
- Add msdos and win32 directories with makefiles [Truta]
- More additions and improvements to the FAQ
Changes in 1.2.0 (9 March 2003)
- New and improved inflate code
- About 20% faster
- Does not allocate 32K window unless and until needed
- Automatically detects and decompresses gzip streams
- Raw inflate no longer needs an extra dummy byte at end
- Added inflateBack functions using a callback interface--even faster
than inflate, useful for file utilities (gzip, zip)
- Added inflateCopy() function to record state for random access on
externally generated deflate streams (e.g. in gzip files)
- More readable code (I hope)
- New and improved crc32()
- About 50% faster, thanks to suggestions from Rodney Brown
- Add deflateBound() and compressBound() functions
- Fix memory leak in deflateInit2()
- Permit setting dictionary for raw deflate (for parallel deflate)
- Fix const declaration for gzwrite()
- Check for some malloc() failures in gzio.c
- Fix bug in gzopen() on single-byte file 0x1f
- Fix bug in gzread() on concatenated file with 0x1f at end of buffer
and next buffer doesn't start with 0x8b
- Fix uncompress() to return Z_DATA_ERROR on truncated input
- Free memory at end of example.c
- Remove MAX #define in trees.c (conflicted with some libraries)
- Fix static const's in deflate.c, gzio.c, and zutil.[ch]
- Declare malloc() and free() in gzio.c if STDC not defined
- Use malloc() instead of calloc() in zutil.c if int big enough
- Define STDC for AIX
- Add aix/ with approach for compiling shared library on AIX
- Add HP-UX support for shared libraries in configure
- Add OpenUNIX support for shared libraries in configure
- Use $cc instead of gcc to build shared library
- Make prefix directory if needed when installing
- Correct Macintosh avoidance of typedef Byte in zconf.h
- Correct Turbo C memory allocation when under Linux
- Use libz.a instead of -lz in Makefile (assure use of compiled library)
- Update configure to check for snprintf or vsnprintf functions and their
return value, warn during make if using an insecure function
- Fix configure problem with compile-time knowledge of HAVE_UNISTD_H that
is lost when library is used--resolution is to build new zconf.h
- Documentation improvements (in zlib.h):
- Document raw deflate and inflate
- Update RFCs URL
- Point out that zlib and gzip formats are different
- Note that Z_BUF_ERROR is not fatal
- Document string limit for gzprintf() and possible buffer overflow
- Note requirement on avail_out when flushing
- Note permitted values of flush parameter of inflate()
- Add some FAQs (and even answers) to the FAQ
- Add contrib/inflate86/ for x86 faster inflate
- Add contrib/blast/ for PKWare Data Compression Library decompression
- Add contrib/puff/ simple inflate for deflate format description
Changes in 1.1.4 (11 March 2002)
- ZFREE was repeated on same allocation on some error conditions.
This creates a security problem described in
http://www.zlib.org/advisory-2002-03-11.txt
- Returned incorrect error (Z_MEM_ERROR) on some invalid data
- Avoid accesses before window for invalid distances with inflate window
less than 32K.
- force windowBits > 8 to avoid a bug in the encoder for a window size
of 256 bytes. (A complete fix will be available in 1.1.5).
Changes in 1.1.3 (9 July 1998)
- fix "an inflate input buffer bug that shows up on rare but persistent
occasions" (Mark)
- fix gzread and gztell for concatenated .gz files (Didier Le Botlan)
- fix gzseek(..., SEEK_SET) in write mode
- fix crc check after a gzeek (Frank Faubert)
- fix miniunzip when the last entry in a zip file is itself a zip file
(J Lillge)
- add contrib/asm586 and contrib/asm686 (Brian Raiter)
See http://www.muppetlabs.com/~breadbox/software/assembly.html
- add support for Delphi 3 in contrib/delphi (Bob Dellaca)
- add support for C++Builder 3 and Delphi 3 in contrib/delphi2 (Davide Moretti)
- do not exit prematurely in untgz if 0 at start of block (Magnus Holmgren)
- use macro EXTERN instead of extern to support DLL for BeOS (Sander Stoks)
- added a FAQ file
- Support gzdopen on Mac with Metrowerks (Jason Linhart)
- Do not redefine Byte on Mac (Brad Pettit & Jason Linhart)
- define SEEK_END too if SEEK_SET is not defined (Albert Chin-A-Young)
- avoid some warnings with Borland C (Tom Tanner)
- fix a problem in contrib/minizip/zip.c for 16-bit MSDOS (Gilles Vollant)
- emulate utime() for WIN32 in contrib/untgz (Gilles Vollant)
- allow several arguments to configure (Tim Mooney, Frodo Looijaard)
- use libdir and includedir in Makefile.in (Tim Mooney)
- support shared libraries on OSF1 V4 (Tim Mooney)
- remove so_locations in "make clean" (Tim Mooney)
- fix maketree.c compilation error (Glenn, Mark)
- Python interface to zlib now in Python 1.5 (Jeremy Hylton)
- new Makefile.riscos (Rich Walker)
- initialize static descriptors in trees.c for embedded targets (Nick Smith)
- use "foo-gz" in example.c for RISCOS and VMS (Nick Smith)
- add the OS/2 files in Makefile.in too (Andrew Zabolotny)
- fix fdopen and halloc macros for Microsoft C 6.0 (Tom Lane)
- fix maketree.c to allow clean compilation of inffixed.h (Mark)
- fix parameter check in deflateCopy (Gunther Nikl)
- cleanup trees.c, use compressed_len only in debug mode (Christian Spieler)
- Many portability patches by Christian Spieler:
. zutil.c, zutil.h: added "const" for zmem*
. Make_vms.com: fixed some typos
. Make_vms.com: msdos/Makefile.*: removed zutil.h from some dependency lists
. msdos/Makefile.msc: remove "default rtl link library" info from obj files
. msdos/Makefile.*: use model-dependent name for the built zlib library
. msdos/Makefile.emx, nt/Makefile.emx, nt/Makefile.gcc:
new makefiles, for emx (DOS/OS2), emx&rsxnt and mingw32 (Windows 9x / NT)
- use define instead of typedef for Bytef also for MSC small/medium (Tom Lane)
- replace __far with _far for better portability (Christian Spieler, Tom Lane)
- fix test for errno.h in configure (Tim Newsham)
Changes in 1.1.2 (19 March 98)
- added contrib/minzip, mini zip and unzip based on zlib (Gilles Vollant)
See http://www.winimage.com/zLibDll/unzip.html
- preinitialize the inflate tables for fixed codes, to make the code
completely thread safe (Mark)
- some simplifications and slight speed-up to the inflate code (Mark)
- fix gzeof on non-compressed files (Allan Schrum)
- add -std1 option in configure for OSF1 to fix gzprintf (Martin Mokrejs)
- use default value of 4K for Z_BUFSIZE for 16-bit MSDOS (Tim Wegner + Glenn)
- added os2/Makefile.def and os2/zlib.def (Andrew Zabolotny)
- add shared lib support for UNIX_SV4.2MP (MATSUURA Takanori)
- do not wrap extern "C" around system includes (Tom Lane)
- mention zlib binding for TCL in README (Andreas Kupries)
- added amiga/Makefile.pup for Amiga powerUP SAS/C PPC (Andreas Kleinert)
- allow "make install prefix=..." even after configure (Glenn Randers-Pehrson)
- allow "configure --prefix $HOME" (Tim Mooney)
- remove warnings in example.c and gzio.c (Glenn Randers-Pehrson)
- move Makefile.sas to amiga/Makefile.sas
Changes in 1.1.1 (27 Feb 98)
- fix macros _tr_tally_* in deflate.h for debug mode (Glenn Randers-Pehrson)
- remove block truncation heuristic which had very marginal effect for zlib
(smaller lit_bufsize than in gzip 1.2.4) and degraded a little the
compression ratio on some files. This also allows inlining _tr_tally for
matches in deflate_slow.
- added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier)
Changes in 1.1.0 (24 Feb 98)
- do not return STREAM_END prematurely in inflate (John Bowler)
- revert to the zlib 1.0.8 inflate to avoid the gcc 2.8.0 bug (Jeremy Buhler)
- compile with -DFASTEST to get compression code optimized for speed only
- in minigzip, try mmap'ing the input file first (Miguel Albrecht)
- increase size of I/O buffers in minigzip.c and gzio.c (not a big gain
on Sun but significant on HP)
- add a pointer to experimental unzip library in README (Gilles Vollant)
- initialize variable gcc in configure (Chris Herborth)
Changes in 1.0.9 (17 Feb 1998)
- added gzputs and gzgets functions
- do not clear eof flag in gzseek (Mark Diekhans)
- fix gzseek for files in transparent mode (Mark Diekhans)
- do not assume that vsprintf returns the number of bytes written (Jens Krinke)
- replace EXPORT with ZEXPORT to avoid conflict with other programs
- added compress2 in zconf.h, zlib.def, zlib.dnt
- new asm code from Gilles Vollant in contrib/asm386
- simplify the inflate code (Mark):
. Replace ZALLOC's in huft_build() with single ZALLOC in inflate_blocks_new()
. ZALLOC the length list in inflate_trees_fixed() instead of using stack
. ZALLOC the value area for huft_build() instead of using stack
. Simplify Z_FINISH check in inflate()
- Avoid gcc 2.8.0 comparison bug a little differently than zlib 1.0.8
- in inftrees.c, avoid cc -O bug on HP (Farshid Elahi)
- in zconf.h move the ZLIB_DLL stuff earlier to avoid problems with
the declaration of FAR (Gilles VOllant)
- install libz.so* with mode 755 (executable) instead of 644 (Marc Lehmann)
- read_buf buf parameter of type Bytef* instead of charf*
- zmemcpy parameters are of type Bytef*, not charf* (Joseph Strout)
- do not redeclare unlink in minigzip.c for WIN32 (John Bowler)
- fix check for presence of directories in "make install" (Ian Willis)
Changes in 1.0.8 (27 Jan 1998)
- fixed offsets in contrib/asm386/gvmat32.asm (Gilles Vollant)
- fix gzgetc and gzputc for big endian systems (Markus Oberhumer)
- added compress2() to allow setting the compression level
- include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong)
- use constant arrays for the static trees in trees.c instead of computing
them at run time (thanks to Ken Raeburn for this suggestion). To create
trees.h, compile with GEN_TREES_H and run "make test".
- check return code of example in "make test" and display result
- pass minigzip command line options to file_compress
- simplifying code of inflateSync to avoid gcc 2.8 bug
- support CC="gcc -Wall" in configure -s (QingLong)
- avoid a flush caused by ftell in gzopen for write mode (Ken Raeburn)
- fix test for shared library support to avoid compiler warnings
- zlib.lib -> zlib.dll in msdos/zlib.rc (Gilles Vollant)
- check for TARGET_OS_MAC in addition to MACOS (Brad Pettit)
- do not use fdopen for Metrowerks on Mac (Brad Pettit))
- add checks for gzputc and gzputc in example.c
- avoid warnings in gzio.c and deflate.c (Andreas Kleinert)
- use const for the CRC table (Ken Raeburn)
- fixed "make uninstall" for shared libraries
- use Tracev instead of Trace in infblock.c
- in example.c use correct compressed length for test_sync
- suppress +vnocompatwarnings in configure for HPUX (not always supported)
Changes in 1.0.7 (20 Jan 1998)
- fix gzseek which was broken in write mode
- return error for gzseek to negative absolute position
- fix configure for Linux (Chun-Chung Chen)
- increase stack space for MSC (Tim Wegner)
- get_crc_table and inflateSyncPoint are EXPORTed (Gilles Vollant)
- define EXPORTVA for gzprintf (Gilles Vollant)
- added man page zlib.3 (Rick Rodgers)
- for contrib/untgz, fix makedir() and improve Makefile
- check gzseek in write mode in example.c
- allocate extra buffer for seeks only if gzseek is actually called
- avoid signed/unsigned comparisons (Tim Wegner, Gilles Vollant)
- add inflateSyncPoint in zconf.h
- fix list of exported functions in nt/zlib.dnt and mdsos/zlib.def
Changes in 1.0.6 (19 Jan 1998)
- add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and
gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code)
- Fix a deflate bug occuring only with compression level 0 (thanks to
Andy Buckler for finding this one).
- In minigzip, pass transparently also the first byte for .Z files.
- return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress()
- check Z_FINISH in inflate (thanks to Marc Schluper)
- Implement deflateCopy (thanks to Adam Costello)
- make static libraries by default in configure, add --shared option.
- move MSDOS or Windows specific files to directory msdos
- suppress the notion of partial flush to simplify the interface
(but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4)
- suppress history buffer provided by application to simplify the interface
(this feature was not implemented anyway in 1.0.4)
- next_in and avail_in must be initialized before calling inflateInit or
inflateInit2
- add EXPORT in all exported functions (for Windows DLL)
- added Makefile.nt (thanks to Stephen Williams)
- added the unsupported "contrib" directory:
contrib/asm386/ by Gilles Vollant <info@winimage.com>
386 asm code replacing longest_match().
contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu>
A C++ I/O streams interface to the zlib gz* functions
contrib/iostream2/ by Tyge L<>vset <Tyge.Lovset@cmr.no>
Another C++ I/O streams interface
contrib/untgz/ by "Pedro A. Aranda Guti\irrez" <paag@tid.es>
A very simple tar.gz file extractor using zlib
contrib/visual-basic.txt by Carlos Rios <c_rios@sonda.cl>
How to use compress(), uncompress() and the gz* functions from VB.
- pass params -f (filtered data), -h (huffman only), -1 to -9 (compression
level) in minigzip (thanks to Tom Lane)
- use const for rommable constants in deflate
- added test for gzseek and gztell in example.c
- add undocumented function inflateSyncPoint() (hack for Paul Mackerras)
- add undocumented function zError to convert error code to string
(for Tim Smithers)
- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code.
- Use default memcpy for Symantec MSDOS compiler.
- Add EXPORT keyword for check_func (needed for Windows DLL)
- add current directory to LD_LIBRARY_PATH for "make test"
- create also a link for libz.so.1
- added support for FUJITSU UXP/DS (thanks to Toshiaki Nomura)
- use $(SHAREDLIB) instead of libz.so in Makefile.in (for HPUX)
- added -soname for Linux in configure (Chun-Chung Chen,
- assign numbers to the exported functions in zlib.def (for Windows DLL)
- add advice in zlib.h for best usage of deflateSetDictionary
- work around compiler bug on Atari (cast Z_NULL in call of s->checkfn)
- allow compilation with ANSI keywords only enabled for TurboC in large model
- avoid "versionString"[0] (Borland bug)
- add NEED_DUMMY_RETURN for Borland
- use variable z_verbose for tracing in debug mode (L. Peter Deutsch).
- allow compilation with CC
- defined STDC for OS/2 (David Charlap)
- limit external names to 8 chars for MVS (Thomas Lund)
- in minigzip.c, use static buffers only for 16-bit systems
- fix suffix check for "minigzip -d foo.gz"
- do not return an error for the 2nd of two consecutive gzflush() (Felix Lee)
- use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau)
- added makelcc.bat for lcc-win32 (Tom St Denis)
- in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe)
- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion.
- check for unistd.h in configure (for off_t)
- remove useless check parameter in inflate_blocks_free
- avoid useless assignment of s->check to itself in inflate_blocks_new
- do not flush twice in gzclose (thanks to Ken Raeburn)
- rename FOPEN as F_OPEN to avoid clash with /usr/include/sys/file.h
- use NO_ERRNO_H instead of enumeration of operating systems with errno.h
- work around buggy fclose on pipes for HP/UX
- support zlib DLL with BORLAND C++ 5.0 (thanks to Glenn Randers-Pehrson)
- fix configure if CC is already equal to gcc
Changes in 1.0.5 (3 Jan 98)
- Fix inflate to terminate gracefully when fed corrupted or invalid data
- Use const for rommable constants in inflate
- Eliminate memory leaks on error conditions in inflate
- Removed some vestigial code in inflate
- Update web address in README
Changes in 1.0.4 (24 Jul 96)
- In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF
bit, so the decompressor could decompress all the correct data but went
on to attempt decompressing extra garbage data. This affected minigzip too.
- zlibVersion and gzerror return const char* (needed for DLL)
- port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno)
- use z_error only for DEBUG (avoid problem with DLLs)
Changes in 1.0.3 (2 Jul 96)
- use z_streamp instead of z_stream *, which is now a far pointer in MSDOS
small and medium models; this makes the library incompatible with previous
versions for these models. (No effect in large model or on other systems.)
- return OK instead of BUF_ERROR if previous deflate call returned with
avail_out as zero but there is nothing to do
- added memcmp for non STDC compilers
- define NO_DUMMY_DECL for more Mac compilers (.h files merged incorrectly)
- define __32BIT__ if __386__ or i386 is defined (pb. with Watcom and SCO)
- better check for 16-bit mode MSC (avoids problem with Symantec)
Changes in 1.0.2 (23 May 96)
- added Windows DLL support
- added a function zlibVersion (for the DLL support)
- fixed declarations using Bytef in infutil.c (pb with MSDOS medium model)
- Bytef is define's instead of typedef'd only for Borland C
- avoid reading uninitialized memory in example.c
- mention in README that the zlib format is now RFC1950
- updated Makefile.dj2
- added algorithm.doc
Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion]
- fix array overlay in deflate.c which sometimes caused bad compressed data
- fix inflate bug with empty stored block
- fix MSDOS medium model which was broken in 0.99
- fix deflateParams() which could generated bad compressed data.
- Bytef is define'd instead of typedef'ed (work around Borland bug)
- added an INDEX file
- new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32),
Watcom (Makefile.wat), Amiga SAS/C (Makefile.sas)
- speed up adler32 for modern machines without auto-increment
- added -ansi for IRIX in configure
- static_init_done in trees.c is an int
- define unlink as delete for VMS
- fix configure for QNX
- add configure branch for SCO and HPUX
- avoid many warnings (unused variables, dead assignments, etc...)
- no fdopen for BeOS
- fix the Watcom fix for 32 bit mode (define FAR as empty)
- removed redefinition of Byte for MKWERKS
- work around an MWKERKS bug (incorrect merge of all .h files)
Changes in 0.99 (27 Jan 96)
- allow preset dictionary shared between compressor and decompressor
- allow compression level 0 (no compression)
- add deflateParams in zlib.h: allow dynamic change of compression level
and compression strategy.
- test large buffers and deflateParams in example.c
- add optional "configure" to build zlib as a shared library
- suppress Makefile.qnx, use configure instead
- fixed deflate for 64-bit systems (detected on Cray)
- fixed inflate_blocks for 64-bit systems (detected on Alpha)
- declare Z_DEFLATED in zlib.h (possible parameter for deflateInit2)
- always return Z_BUF_ERROR when deflate() has nothing to do
- deflateInit and inflateInit are now macros to allow version checking
- prefix all global functions and types with z_ with -DZ_PREFIX
- make falloc completely reentrant (inftrees.c)
- fixed very unlikely race condition in ct_static_init
- free in reverse order of allocation to help memory manager
- use zlib-1.0/* instead of zlib/* inside the tar.gz
- make zlib warning-free with "gcc -O3 -Wall -Wwrite-strings -Wpointer-arith
-Wconversion -Wstrict-prototypes -Wmissing-prototypes"
- allow gzread on concatenated .gz files
- deflateEnd now returns Z_DATA_ERROR if it was premature
- deflate is finally (?) fully deterministic (no matches beyond end of input)
- Document Z_SYNC_FLUSH
- add uninstall in Makefile
- Check for __cpluplus in zlib.h
- Better test in ct_align for partial flush
- avoid harmless warnings for Borland C++
- initialize hash_head in deflate.c
- avoid warning on fdopen (gzio.c) for HP cc -Aa
- include stdlib.h for STDC compilers
- include errno.h for Cray
- ignore error if ranlib doesn't exist
- call ranlib twice for NeXTSTEP
- use exec_prefix instead of prefix for libz.a
- renamed ct_* as _tr_* to avoid conflict with applications
- clear z->msg in inflateInit2 before any error return
- initialize opaque in example.c, gzio.c, deflate.c and inflate.c
- fixed typo in zconf.h (_GNUC__ => __GNUC__)
- check for WIN32 in zconf.h and zutil.c (avoid farmalloc in 32-bit mode)
- fix typo in Make_vms.com (f$trnlnm -> f$getsyi)
- in fcalloc, normalize pointer if size > 65520 bytes
- don't use special fcalloc for 32 bit Borland C++
- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc...
- use Z_BINARY instead of BINARY
- document that gzclose after gzdopen will close the file
- allow "a" as mode in gzopen.
- fix error checking in gzread
- allow skipping .gz extra-field on pipes
- added reference to Perl interface in README
- put the crc table in FAR data (I dislike more and more the medium model :)
- added get_crc_table
- added a dimension to all arrays (Borland C can't count).
- workaround Borland C bug in declaration of inflate_codes_new & inflate_fast
- guard against multiple inclusion of *.h (for precompiled header on Mac)
- Watcom C pretends to be Microsoft C small model even in 32 bit mode.
- don't use unsized arrays to avoid silly warnings by Visual C++:
warning C4746: 'inflate_mask' : unsized array treated as '__far'
(what's wrong with far data in far model?).
- define enum out of inflate_blocks_state to allow compilation with C++
Changes in 0.95 (16 Aug 95)
- fix MSDOS small and medium model (now easier to adapt to any compiler)
- inlined send_bits
- fix the final (:-) bug for deflate with flush (output was correct but
not completely flushed in rare occasions).
- default window size is same for compression and decompression
(it's now sufficient to set MAX_WBITS in zconf.h).
- voidp -> voidpf and voidnp -> voidp (for consistency with other
typedefs and because voidnp was not near in large model).
Changes in 0.94 (13 Aug 95)
- support MSDOS medium model
- fix deflate with flush (could sometimes generate bad output)
- fix deflateReset (zlib header was incorrectly suppressed)
- added support for VMS
- allow a compression level in gzopen()
- gzflush now calls fflush
- For deflate with flush, flush even if no more input is provided.
- rename libgz.a as libz.a
- avoid complex expression in infcodes.c triggering Turbo C bug
- work around a problem with gcc on Alpha (in INSERT_STRING)
- don't use inline functions (problem with some gcc versions)
- allow renaming of Byte, uInt, etc... with #define.
- avoid warning about (unused) pointer before start of array in deflate.c
- avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c
- avoid reserved word 'new' in trees.c
Changes in 0.93 (25 June 95)
- temporarily disable inline functions
- make deflate deterministic
- give enough lookahead for PARTIAL_FLUSH
- Set binary mode for stdin/stdout in minigzip.c for OS/2
- don't even use signed char in inflate (not portable enough)
- fix inflate memory leak for segmented architectures
Changes in 0.92 (3 May 95)
- don't assume that char is signed (problem on SGI)
- Clear bit buffer when starting a stored block
- no memcpy on Pyramid
- suppressed inftest.c
- optimized fill_window, put longest_match inline for gcc
- optimized inflate on stored blocks.
- untabify all sources to simplify patches
Changes in 0.91 (2 May 95)
- Default MEM_LEVEL is 8 (not 9 for Unix) as documented in zlib.h
- Document the memory requirements in zconf.h
- added "make install"
- fix sync search logic in inflateSync
- deflate(Z_FULL_FLUSH) now works even if output buffer too short
- after inflateSync, don't scare people with just "lo world"
- added support for DJGPP
Changes in 0.9 (1 May 95)
- don't assume that zalloc clears the allocated memory (the TurboC bug
was Mark's bug after all :)
- let again gzread copy uncompressed data unchanged (was working in 0.71)
- deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented
- added a test of inflateSync in example.c
- moved MAX_WBITS to zconf.h because users might want to change that.
- document explicitly that zalloc(64K) on MSDOS must return a normalized
pointer (zero offset)
- added Makefiles for Microsoft C, Turbo C, Borland C++
- faster crc32()
Changes in 0.8 (29 April 95)
- added fast inflate (inffast.c)
- deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this
is incompatible with previous versions of zlib which returned Z_OK.
- work around a TurboC compiler bug (bad code for b << 0, see infutil.h)
(actually that was not a compiler bug, see 0.81 above)
- gzread no longer reads one extra byte in certain cases
- In gzio destroy(), don't reference a freed structure
- avoid many warnings for MSDOS
- avoid the ERROR symbol which is used by MS Windows
Changes in 0.71 (14 April 95)
- Fixed more MSDOS compilation problems :( There is still a bug with
TurboC large model.
Changes in 0.7 (14 April 95)
- Added full inflate support.
- Simplified the crc32() interface. The pre- and post-conditioning
(one's complement) is now done inside crc32(). WARNING: this is
incompatible with previous versions; see zlib.h for the new usage.
Changes in 0.61 (12 April 95)
- workaround for a bug in TurboC. example and minigzip now work on MSDOS.
Changes in 0.6 (11 April 95)
- added minigzip.c
- added gzdopen to reopen a file descriptor as gzFile
- added transparent reading of non-gziped files in gzread.
- fixed bug in gzread (don't read crc as data)
- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose).
- don't allocate big arrays in the stack (for MSDOS)
- fix some MSDOS compilation problems
Changes in 0.5:
- do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but
not yet Z_FULL_FLUSH.
- support decompression but only in a single step (forced Z_FINISH)
- added opaque object for zalloc and zfree.
- added deflateReset and inflateReset
- added a variable zlib_version for consistency checking.
- renamed the 'filter' parameter of deflateInit2 as 'strategy'.
Added Z_FILTERED and Z_HUFFMAN_ONLY constants.
Changes in 0.4:
- avoid "zip" everywhere, use zlib instead of ziplib.
- suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush
if compression method == 8.
- added adler32 and crc32
- renamed deflateOptions as deflateInit2, call one or the other but not both
- added the method parameter for deflateInit2.
- added inflateInit2
- simplied considerably deflateInit and inflateInit by not supporting
user-provided history buffer. This is supported only in deflateInit2
and inflateInit2.
Changes in 0.3:
- prefix all macro names with Z_
- use Z_FINISH instead of deflateEnd to finish compression.
- added Z_HUFFMAN_ONLY
- added gzerror()

View File

@@ -1,315 +0,0 @@
Frequently Asked Questions about zlib
If your question is not there, please check the zlib home page
http://www.zlib.org which may have more recent information.
The lastest zlib FAQ is at http://www.gzip.org/zlib/zlib_faq.html
1. Is zlib Y2K-compliant?
Yes. zlib doesn't handle dates.
2. Where can I get a Windows DLL version?
The zlib sources can be compiled without change to produce a DLL.
See the file win32/DLL_FAQ.txt in the zlib distribution.
Pointers to the precompiled DLL are found in the zlib web site at
http://www.zlib.org.
3. Where can I get a Visual Basic interface to zlib?
See
* http://www.winimage.com/zLibDll/
* http://www.dogma.net/markn/articles/zlibtool/zlibtool.htm
* contrib/visual-basic.txt in the zlib distribution
4. compress() returns Z_BUF_ERROR
Make sure that before the call of compress, the length of the compressed
buffer is equal to the total size of the compressed buffer and not
zero. For Visual Basic, check that this parameter is passed by reference
("as any"), not by value ("as long").
5. deflate() or inflate() returns Z_BUF_ERROR
Before making the call, make sure that avail_in and avail_out are not
zero. When setting the parameter flush equal to Z_FINISH, also make sure
that avail_out is big enough to allow processing all pending input.
Note that a Z_BUF_ERROR is not fatal--another call to deflate() or
inflate() can be made with more input or output space. A Z_BUF_ERROR
may in fact be unavoidable depending on how the functions are used, since
it is not possible to tell whether or not there is more output pending
when strm.avail_out returns with zero.
6. Where's the zlib documentation (man pages, etc.)?
It's in zlib.h for the moment, and Francis S. Lin has converted it to a
web page zlib.html. Volunteers to transform this to Unix-style man pages,
please contact Jean-loup Gailly (jloup@gzip.org). Examples of zlib usage
are in the files example.c and minigzip.c.
7. Why don't you use GNU autoconf or libtool or ...?
Because we would like to keep zlib as a very small and simple
package. zlib is rather portable and doesn't need much configuration.
8. I found a bug in zlib.
Most of the time, such problems are due to an incorrect usage of
zlib. Please try to reproduce the problem with a small program and send
the corresponding source to us at zlib@gzip.org . Do not send
multi-megabyte data files without prior agreement.
9. Why do I get "undefined reference to gzputc"?
If "make test" produces something like
example.o(.text+0x154): undefined reference to `gzputc'
check that you don't have old files libz.* in /usr/lib, /usr/local/lib or
/usr/X11R6/lib. Remove any old versions, then do "make install".
10. I need a Delphi interface to zlib.
See the contrib/delphi directory in the zlib distribution.
11. Can zlib handle .zip archives?
See the directory contrib/minizip in the zlib distribution.
12. Can zlib handle .Z files?
No, sorry. You have to spawn an uncompress or gunzip subprocess, or adapt
the code of uncompress on your own.
13. How can I make a Unix shared library?
make clean
./configure -s
make
14. How do I install a shared zlib library on Unix?
make install
However, many flavors of Unix come with a shared zlib already installed.
Before going to the trouble of compiling a shared version of zlib and
trying to install it, you may want to check if it's already there! If you
can #include <zlib.h>, it's there. The -lz option will probably link to it.
15. I have a question about OttoPDF
We are not the authors of OttoPDF. The real author is on the OttoPDF web
site Joel Hainley jhainley@myndkryme.com.
16. Why does gzip give an error on a file I make with compress/deflate?
The compress and deflate functions produce data in the zlib format, which
is different and incompatible with the gzip format. The gz* functions in
zlib on the other hand use the gzip format. Both the zlib and gzip
formats use the same compressed data format internally, but have different
headers and trailers around the compressed data.
17. Ok, so why are there two different formats?
The gzip format was designed to retain the directory information about
a single file, such as the name and last modification date. The zlib
format on the other hand was designed for in-memory and communication
channel applications, and has a much more compact header and trailer and
uses a faster integrity check than gzip.
18. Well that's nice, but how do I make a gzip file in memory?
You can request that deflate write the gzip format instead of the zlib
format using deflateInit2(). You can also request that inflate decode
the gzip format using inflateInit2(). Read zlib.h for more details.
Note that you cannot specify special gzip header contents (e.g. a file
name or modification date), nor will inflate tell you what was in the
gzip header. If you need to customize the header or see what's in it,
you can use the raw deflate and inflate operations and the crc32()
function and roll your own gzip encoding and decoding. Read the gzip
RFC 1952 for details of the header and trailer format.
19. Is zlib thread-safe?
Yes. However any library routines that zlib uses and any application-
provided memory allocation routines must also be thread-safe. zlib's gz*
functions use stdio library routines, and most of zlib's functions use the
library memory allocation routines by default. zlib's Init functions allow
for the application to provide custom memory allocation routines.
Of course, you should only operate on any given zlib or gzip stream from a
single thread at a time.
20. Can I use zlib in my commercial application?
Yes. Please read the license in zlib.h.
21. Is zlib under the GNU license?
No. Please read the license in zlib.h.
22. The license says that altered source versions must be "plainly marked". So
what exactly do I need to do to meet that requirement?
You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In
particular, the final version number needs to be changed to "f", and an
identification string should be appended to ZLIB_VERSION. Version numbers
x.x.x.f are reserved for modifications to zlib by others than the zlib
maintainers. For example, if the version of the base zlib you are altering
is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and
ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also
update the version strings in deflate.c and inftrees.c.
For altered source distributions, you should also note the origin and
nature of the changes in zlib.h, as well as in ChangeLog and README, along
with the dates of the alterations. The origin should include at least your
name (or your company's name), and an email address to contact for help or
issues with the library.
Note that distributing a compiled zlib library along with zlib.h and
zconf.h is also a source distribution, and so you should change
ZLIB_VERSION and ZLIB_VERNUM and note the origin and nature of the changes
in zlib.h as you would for a full source distribution.
23. Will zlib work on a big-endian or little-endian architecture, and can I
exchange compressed data between them?
Yes and yes.
24. Will zlib work on a 64-bit machine?
It should. It has been tested on 64-bit machines, and has no dependence
on any data types being limited to 32-bits in length. If you have any
difficulties, please provide a complete problem report to zlib@gzip.org
25. Will zlib decompress data from the PKWare Data Compression Library?
No. The PKWare DCL uses a completely different compressed data format
than does PKZIP and zlib. However, you can look in zlib's contrib/blast
directory for a possible solution to your problem.
26. Can I access data randomly in a compressed stream?
No, not without some preparation. If when compressing you periodically
use Z_FULL_FLUSH, carefully write all the pending data at those points,
and keep an index of those locations, then you can start decompression
at those points. You have to be careful to not use Z_FULL_FLUSH too
often, since it can significantly degrade compression.
27. Does zlib work on MVS, OS/390, CICS, etc.?
We don't know for sure. We have heard occasional reports of success on
these systems. If you do use it on one of these, please provide us with
a report, instructions, and patches that we can reference when we get
these questions. Thanks.
28. Is there some simpler, easier to read version of inflate I can look at
to understand the deflate format?
First off, you should read RFC 1951. Second, yes. Look in zlib's
contrib/puff directory.
29. Does zlib infringe on any patents?
As far as we know, no. In fact, that was originally the whole point behind
zlib. Look here for some more information:
http://www.gzip.org/#faq11
30. Can zlib work with greater than 4 GB of data?
Yes. inflate() and deflate() will process any amount of data correctly.
Each call of inflate() or deflate() is limited to input and output chunks
of the maximum value that can be stored in the compiler's "unsigned int"
type, but there is no limit to the number of chunks. Note however that the
strm.total_in and strm_total_out counters may be limited to 4 GB. These
counters are provided as a convenience and are not used internally by
inflate() or deflate(). The application can easily set up its own counters
updated after each call of inflate() or deflate() to count beyond 4 GB.
compress() and uncompress() may be limited to 4 GB, since they operate in a
single call. gzseek() and gztell() may be limited to 4 GB depending on how
zlib is compiled. See the zlibCompileFlags() function in zlib.h.
The word "may" appears several times above since there is a 4 GB limit
only if the compiler's "long" type is 32 bits. If the compiler's "long"
type is 64 bits, then the limit is 16 exabytes.
31. Does zlib have any security vulnerabilities?
The only one that we are aware of is potentially in gzprintf(). If zlib
is compiled to use sprintf() or vsprintf(), then there is no protection
against a buffer overflow of a 4K string space, other than the caller of
gzprintf() assuring that the output will not exceed 4K. On the other
hand, if zlib is compiled to use snprintf() or vsnprintf(), which should
normally be the case, then there is no vulnerability. The ./configure
script will display warnings if an insecure variation of sprintf() will
be used by gzprintf(). Also the zlibCompileFlags() function will return
information on what variant of sprintf() is used by gzprintf().
If you don't have snprintf() or vsnprintf() and would like one, you can
find a portable implementation here:
http://www.ijs.si/software/snprintf/
Note that you should be using the most recent version of zlib. Versions
1.1.3 and before were subject to a double-free vulnerability.
32. Is there a Java version of zlib?
Probably what you want is to use zlib in Java. zlib is already included
as part of the Java SDK in the java.util.zip package. If you really want
a version of zlib written in the Java language, look on the zlib home
page for links: http://www.zlib.org/
33. I get this or that compiler or source-code scanner warning when I crank it
up to maximally-pendantic. Can't you guys write proper code?
Many years ago, we gave up attempting to avoid warnings on every compiler
in the universe. It just got to be a waste of time, and some compilers
were downright silly. So now, we simply make sure that the code always
works.
34. Will zlib read the (insert any ancient or arcane format here) compressed
data format?
Probably not. Look in the comp.compression FAQ for pointers to various
formats and associated software.
35. How can I encrypt/decrypt zip files with zlib?
zlib doesn't support encryption. The original PKZIP encryption is very weak
and can be broken with freely available programs. To get strong encryption,
use gpg ( http://www.gnupg.org/ ) which already includes zlib compression.
For PKZIP compatible "encryption", look at http://www.info-zip.org/
36. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings?
"gzip" is the gzip format, and "deflate" is the zlib format. They should
probably have called the second one "zlib" instead to avoid confusion
with the raw deflate compressed data format. While the HTTP 1.1 RFC 2616
correctly points to the zlib specification in RFC 1950 for the "deflate"
transfer encoding, there have been reports of servers and browsers that
incorrectly produce or expect raw deflate data per the deflate
specficiation in RFC 1951, most notably Microsoft. So even though the
"deflate" transfer encoding using the zlib format would be the more
efficient approach (and in fact exactly what the zlib format was designed
for), using the "gzip" transfer encoding is probably more reliable due to
an unfortunate choice of name on the part of the HTTP 1.1 authors.
Bottom line: use the gzip format for HTTP 1.1 encoding.
37. Does zlib support the new "Deflate64" format introduced by PKWare?
No. PKWare has apparently decided to keep that format proprietary, since
they have not documented it as they have previous compression formats.
In any case, the compression improvements are so modest compared to other
more modern approaches, that it's not worth the effort to implement.
38. Can you please sign these lengthy legal documents and fax them back to us
so that we can use your software in our product?
No. Go away. Shoo.

View File

@@ -1,48 +0,0 @@
ChangeLog history of changes
FAQ Frequently Asked Questions about zlib
INDEX this file
Makefile makefile for Unix (generated by configure)
Makefile.in makefile for Unix (template for configure)
README guess what
algorithm.txt description of the (de)compression algorithm
configure configure script for Unix
zconf.in.h template for zconf.h (used by configure)
msdos/ makefiles for MSDOS
old/ makefiles for various architectures and zlib documentation
files that have not yet been updated for zlib 1.2.x
qnx/ makefiles for QNX
win32/ makefiles for Windows
zlib public header files (must be kept):
zconf.h
zlib.h
private source files used to build the zlib library:
adler32.c
compress.c
crc32.c
crc32.h
deflate.c
deflate.h
gzio.c
infback.c
inffast.c
inffast.h
inffixed.h
inflate.c
inflate.h
inftrees.c
inftrees.h
trees.c
trees.h
uncompr.c
zutil.c
zutil.h
source files for sample programs:
example.c
minigzip.c
unsupported contribution by third parties
See contrib/README.contrib

View File

@@ -1,126 +0,0 @@
ZLIB DATA COMPRESSION LIBRARY
zlib 1.2.1 is a general purpose data compression library. All the code is
thread safe. The data format used by the zlib library is described by RFCs
(Request for Comments) 1950 to 1952 in the files
http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate format)
and rfc1952.txt (gzip format). These documents are also available in other
formats from ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html
All functions of the compression library are documented in the file zlib.h
(volunteer to write man pages welcome, contact zlib@gzip.org). A usage example
of the library is given in the file example.c which also tests that the library
is working correctly. Another example is given in the file minigzip.c. The
compression library itself is composed of all source files except example.c and
minigzip.c.
To compile all files and run the test program, follow the instructions given at
the top of Makefile. In short "make test; make install" should work for most
machines. For Unix: "./configure; make test; make install" For MSDOS, use one
of the special makefiles such as Makefile.msc. For VMS, use Make_vms.com or
descrip.mms.
Questions about zlib should be sent to <zlib@gzip.org>, or to Gilles Vollant
<info@winimage.com> for the Windows DLL version. The zlib home page is
http://www.zlib.org or http://www.gzip.org/zlib/ Before reporting a problem,
please check this site to verify that you have the latest version of zlib;
otherwise get the latest version and check whether the problem still exists or
not.
PLEASE read the zlib FAQ http://www.gzip.org/zlib/zlib_faq.html before asking
for help.
Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
issue of Dr. Dobb's Journal; a copy of the article is available in
http://dogma.net/markn/articles/zlibtool/zlibtool.htm
The changes made in version 1.2.1 are documented in the file ChangeLog.
Unsupported third party contributions are provided in directory "contrib".
A Java implementation of zlib is available in the Java Development Kit
http://java.sun.com/j2se/1.4.2/docs/api/java/util/zip/package-summary.html
See the zlib home page http://www.zlib.org for details.
A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is in the
CPAN (Comprehensive Perl Archive Network) sites
http://www.cpan.org/modules/by-module/Compress/
A Python interface to zlib written by A.M. Kuchling <amk@magnet.com> is
available in Python 1.5 and later versions, see
http://www.python.org/doc/lib/module-zlib.html
A zlib binding for TCL written by Andreas Kupries <a.kupries@westend.com> is
availlable at http://www.oche.de/~akupries/soft/trf/trf_zip.html
An experimental package to read and write files in .zip format, written on top
of zlib by Gilles Vollant <info@winimage.com>, is available in the
contrib/minizip directory of zlib.
Notes for some targets:
- For Windows DLL versions, please see win32/DLL_FAQ.txt
- For 64-bit Irix, deflate.c must be compiled without any optimization. With
-O, one libpng test fails. The test works in 32 bit mode (with the -n32
compiler flag). The compiler bug has been reported to SGI.
- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works
when compiled with cc.
- On Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 is
necessary to get gzprintf working correctly. This is done by configure.
- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with
other compilers. Use "make test" to check your compiler.
- gzdopen is not supported on RISCOS, BEOS and by some Mac compilers.
- For PalmOs, see http://palmzlib.sourceforge.net/
- When building a shared, i.e. dynamic library on Mac OS X, the library must be
installed before testing (do "make install" before "make test"), since the
library location is specified in the library.
Acknowledgments:
The deflate format used by zlib was defined by Phil Katz. The deflate
and zlib specifications were written by L. Peter Deutsch. Thanks to all the
people who reported problems and suggested various improvements in zlib;
they are too numerous to cite here.
Copyright notice:
(C) 1995-2003 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
If you use the zlib library in a product, we would appreciate *not*
receiving lengthy legal documents to sign. The sources are provided
for free but without warranty of any kind. The library has been
entirely written by Jean-loup Gailly and Mark Adler; it does not
include third-party code.
If you redistribute modified sources, we would appreciate that you include
in the file ChangeLog history information documenting your changes. Please
read the FAQ for more information on the distribution of modified source
versions.

View File

@@ -1,74 +0,0 @@
/* adler32.c -- compute the Adler-32 checksum of a data stream
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#define ZLIB_INTERNAL
#include "zlib.h"
#define BASE 65521UL /* largest prime smaller than 65536 */
#define NMAX 5552
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
#define DO1(buf,i) {s1 += buf[i]; s2 += s1;}
#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1);
#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2);
#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
#define DO16(buf) DO8(buf,0); DO8(buf,8);
#ifdef NO_DIVIDE
# define MOD(a) \
do { \
if (a >= (BASE << 16)) a -= (BASE << 16); \
if (a >= (BASE << 15)) a -= (BASE << 15); \
if (a >= (BASE << 14)) a -= (BASE << 14); \
if (a >= (BASE << 13)) a -= (BASE << 13); \
if (a >= (BASE << 12)) a -= (BASE << 12); \
if (a >= (BASE << 11)) a -= (BASE << 11); \
if (a >= (BASE << 10)) a -= (BASE << 10); \
if (a >= (BASE << 9)) a -= (BASE << 9); \
if (a >= (BASE << 8)) a -= (BASE << 8); \
if (a >= (BASE << 7)) a -= (BASE << 7); \
if (a >= (BASE << 6)) a -= (BASE << 6); \
if (a >= (BASE << 5)) a -= (BASE << 5); \
if (a >= (BASE << 4)) a -= (BASE << 4); \
if (a >= (BASE << 3)) a -= (BASE << 3); \
if (a >= (BASE << 2)) a -= (BASE << 2); \
if (a >= (BASE << 1)) a -= (BASE << 1); \
if (a >= BASE) a -= BASE; \
} while (0)
#else
# define MOD(a) a %= BASE
#endif
/* ========================================================================= */
uLong ZEXPORT adler32(adler, buf, len)
uLong adler;
const Bytef *buf;
uInt len;
{
unsigned long s1 = adler & 0xffff;
unsigned long s2 = (adler >> 16) & 0xffff;
int k;
if (buf == Z_NULL) return 1L;
while (len > 0) {
k = len < NMAX ? (int)len : NMAX;
len -= k;
while (k >= 16) {
DO16(buf);
buf += 16;
k -= 16;
}
if (k != 0) do {
s1 += *buf++;
s2 += s1;
} while (--k);
MOD(s1);
MOD(s2);
}
return (s2 << 16) | s1;
}

View File

@@ -1,209 +0,0 @@
1. Compression algorithm (deflate)
The deflation algorithm used by gzip (also zip and zlib) is a variation of
LZ77 (Lempel-Ziv 1977, see reference below). It finds duplicated strings in
the input data. The second occurrence of a string is replaced by a
pointer to the previous string, in the form of a pair (distance,
length). Distances are limited to 32K bytes, and lengths are limited
to 258 bytes. When a string does not occur anywhere in the previous
32K bytes, it is emitted as a sequence of literal bytes. (In this
description, `string' must be taken as an arbitrary sequence of bytes,
and is not restricted to printable characters.)
Literals or match lengths are compressed with one Huffman tree, and
match distances are compressed with another tree. The trees are stored
in a compact form at the start of each block. The blocks can have any
size (except that the compressed data for one block must fit in
available memory). A block is terminated when deflate() determines that
it would be useful to start another block with fresh trees. (This is
somewhat similar to the behavior of LZW-based _compress_.)
Duplicated strings are found using a hash table. All input strings of
length 3 are inserted in the hash table. A hash index is computed for
the next 3 bytes. If the hash chain for this index is not empty, all
strings in the chain are compared with the current input string, and
the longest match is selected.
The hash chains are searched starting with the most recent strings, to
favor small distances and thus take advantage of the Huffman encoding.
The hash chains are singly linked. There are no deletions from the
hash chains, the algorithm simply discards matches that are too old.
To avoid a worst-case situation, very long hash chains are arbitrarily
truncated at a certain length, determined by a runtime option (level
parameter of deflateInit). So deflate() does not always find the longest
possible match but generally finds a match which is long enough.
deflate() also defers the selection of matches with a lazy evaluation
mechanism. After a match of length N has been found, deflate() searches for
a longer match at the next input byte. If a longer match is found, the
previous match is truncated to a length of one (thus producing a single
literal byte) and the process of lazy evaluation begins again. Otherwise,
the original match is kept, and the next match search is attempted only N
steps later.
The lazy match evaluation is also subject to a runtime parameter. If
the current match is long enough, deflate() reduces the search for a longer
match, thus speeding up the whole process. If compression ratio is more
important than speed, deflate() attempts a complete second search even if
the first match is already long enough.
The lazy match evaluation is not performed for the fastest compression
modes (level parameter 1 to 3). For these fast modes, new strings
are inserted in the hash table only when no match was found, or
when the match is not too long. This degrades the compression ratio
but saves time since there are both fewer insertions and fewer searches.
2. Decompression algorithm (inflate)
2.1 Introduction
The key question is how to represent a Huffman code (or any prefix code) so
that you can decode fast. The most important characteristic is that shorter
codes are much more common than longer codes, so pay attention to decoding the
short codes fast, and let the long codes take longer to decode.
inflate() sets up a first level table that covers some number of bits of
input less than the length of longest code. It gets that many bits from the
stream, and looks it up in the table. The table will tell if the next
code is that many bits or less and how many, and if it is, it will tell
the value, else it will point to the next level table for which inflate()
grabs more bits and tries to decode a longer code.
How many bits to make the first lookup is a tradeoff between the time it
takes to decode and the time it takes to build the table. If building the
table took no time (and if you had infinite memory), then there would only
be a first level table to cover all the way to the longest code. However,
building the table ends up taking a lot longer for more bits since short
codes are replicated many times in such a table. What inflate() does is
simply to make the number of bits in the first table a variable, and then
to set that variable for the maximum speed.
For inflate, which has 286 possible codes for the literal/length tree, the size
of the first table is nine bits. Also the distance trees have 30 possible
values, and the size of the first table is six bits. Note that for each of
those cases, the table ended up one bit longer than the ``average'' code
length, i.e. the code length of an approximately flat code which would be a
little more than eight bits for 286 symbols and a little less than five bits
for 30 symbols.
2.2 More details on the inflate table lookup
Ok, you want to know what this cleverly obfuscated inflate tree actually
looks like. You are correct that it's not a Huffman tree. It is simply a
lookup table for the first, let's say, nine bits of a Huffman symbol. The
symbol could be as short as one bit or as long as 15 bits. If a particular
symbol is shorter than nine bits, then that symbol's translation is duplicated
in all those entries that start with that symbol's bits. For example, if the
symbol is four bits, then it's duplicated 32 times in a nine-bit table. If a
symbol is nine bits long, it appears in the table once.
If the symbol is longer than nine bits, then that entry in the table points
to another similar table for the remaining bits. Again, there are duplicated
entries as needed. The idea is that most of the time the symbol will be short
and there will only be one table look up. (That's whole idea behind data
compression in the first place.) For the less frequent long symbols, there
will be two lookups. If you had a compression method with really long
symbols, you could have as many levels of lookups as is efficient. For
inflate, two is enough.
So a table entry either points to another table (in which case nine bits in
the above example are gobbled), or it contains the translation for the symbol
and the number of bits to gobble. Then you start again with the next
ungobbled bit.
You may wonder: why not just have one lookup table for how ever many bits the
longest symbol is? The reason is that if you do that, you end up spending
more time filling in duplicate symbol entries than you do actually decoding.
At least for deflate's output that generates new trees every several 10's of
kbytes. You can imagine that filling in a 2^15 entry table for a 15-bit code
would take too long if you're only decoding several thousand symbols. At the
other extreme, you could make a new table for every bit in the code. In fact,
that's essentially a Huffman tree. But then you spend two much time
traversing the tree while decoding, even for short symbols.
So the number of bits for the first lookup table is a trade of the time to
fill out the table vs. the time spent looking at the second level and above of
the table.
Here is an example, scaled down:
The code being decoded, with 10 symbols, from 1 to 6 bits long:
A: 0
B: 10
C: 1100
D: 11010
E: 11011
F: 11100
G: 11101
H: 11110
I: 111110
J: 111111
Let's make the first table three bits long (eight entries):
000: A,1
001: A,1
010: A,1
011: A,1
100: B,2
101: B,2
110: -> table X (gobble 3 bits)
111: -> table Y (gobble 3 bits)
Each entry is what the bits decode as and how many bits that is, i.e. how
many bits to gobble. Or the entry points to another table, with the number of
bits to gobble implicit in the size of the table.
Table X is two bits long since the longest code starting with 110 is five bits
long:
00: C,1
01: C,1
10: D,2
11: E,2
Table Y is three bits long since the longest code starting with 111 is six
bits long:
000: F,2
001: F,2
010: G,2
011: G,2
100: H,2
101: H,2
110: I,3
111: J,3
So what we have here are three tables with a total of 20 entries that had to
be constructed. That's compared to 64 entries for a single table. Or
compared to 16 entries for a Huffman tree (six two entry tables and one four
entry table). Assuming that the code ideally represents the probability of
the symbols, it takes on the average 1.25 lookups per symbol. That's compared
to one lookup for the single table, or 1.66 lookups per symbol for the
Huffman tree.
There, I think that gives you a picture of what's going on. For inflate, the
meaning of a particular symbol is often more than just a letter. It can be a
byte (a "literal"), or it can be either a length or a distance which
indicates a base value and a number of bits to fetch after the code that is
added to the base value. Or it might be the special end-of-block code. The
data structures created in inftrees.c try to encode all that information
compactly in the tables.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
References:
[LZ77] Ziv J., Lempel A., ``A Universal Algorithm for Sequential Data
Compression,'' IEEE Transactions on Information Theory, Vol. 23, No. 3,
pp. 337-343.
``DEFLATE Compressed Data Format Specification'' available in
http://www.ietf.org/rfc/rfc1951.txt

View File

@@ -1,79 +0,0 @@
/* compress.c -- compress a memory buffer
* Copyright (C) 1995-2002 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#define ZLIB_INTERNAL
#include "zlib.h"
/* ===========================================================================
Compresses the source buffer into the destination buffer. The level
parameter has the same meaning as in deflateInit. sourceLen is the byte
length of the source buffer. Upon entry, destLen is the total size of the
destination buffer, which must be at least 0.1% larger than sourceLen plus
12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
memory, Z_BUF_ERROR if there was not enough room in the output buffer,
Z_STREAM_ERROR if the level parameter is invalid.
*/
int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
Bytef *dest;
uLongf *destLen;
const Bytef *source;
uLong sourceLen;
int level;
{
z_stream stream;
int err;
stream.next_in = (Bytef*)source;
stream.avail_in = (uInt)sourceLen;
#ifdef MAXSEG_64K
/* Check for source > 64K on 16-bit machine: */
if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
#endif
stream.next_out = dest;
stream.avail_out = (uInt)*destLen;
if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
stream.zalloc = (alloc_func)0;
stream.zfree = (free_func)0;
stream.opaque = (voidpf)0;
err = deflateInit(&stream, level);
if (err != Z_OK) return err;
err = deflate(&stream, Z_FINISH);
if (err != Z_STREAM_END) {
deflateEnd(&stream);
return err == Z_OK ? Z_BUF_ERROR : err;
}
*destLen = stream.total_out;
err = deflateEnd(&stream);
return err;
}
/* ===========================================================================
*/
int ZEXPORT compress (dest, destLen, source, sourceLen)
Bytef *dest;
uLongf *destLen;
const Bytef *source;
uLong sourceLen;
{
return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION);
}
/* ===========================================================================
If the default memLevel or windowBits for deflateInit() is changed, then
this function needs to be updated.
*/
uLong ZEXPORT compressBound (sourceLen)
uLong sourceLen;
{
return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + 11;
}

View File

@@ -1,311 +0,0 @@
/* crc32.c -- compute the CRC-32 of a data stream
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*
* Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
* CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
* tables for updating the shift register in one step with three exclusive-ors
* instead of four steps with four exclusive-ors. This results about a factor
* of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
*/
/* @(#) $Id$ */
#ifdef MAKECRCH
# include <stdio.h>
# ifndef DYNAMIC_CRC_TABLE
# define DYNAMIC_CRC_TABLE
# endif /* !DYNAMIC_CRC_TABLE */
#endif /* MAKECRCH */
#include "zutil.h" /* for STDC and FAR definitions */
#define local static
/* Find a four-byte integer type for crc32_little() and crc32_big(). */
#ifndef NOBYFOUR
# ifdef STDC /* need ANSI C limits.h to determine sizes */
# include <limits.h>
# define BYFOUR
# if (UINT_MAX == 0xffffffffUL)
typedef unsigned int u4;
# else
# if (ULONG_MAX == 0xffffffffUL)
typedef unsigned long u4;
# else
# if (USHRT_MAX == 0xffffffffUL)
typedef unsigned short u4;
# else
# undef BYFOUR /* can't find a four-byte integer type! */
# endif
# endif
# endif
# endif /* STDC */
#endif /* !NOBYFOUR */
/* Definitions for doing the crc four data bytes at a time. */
#ifdef BYFOUR
# define REV(w) (((w)>>24)+(((w)>>8)&0xff00)+ \
(((w)&0xff00)<<8)+(((w)&0xff)<<24))
local unsigned long crc32_little OF((unsigned long,
const unsigned char FAR *, unsigned));
local unsigned long crc32_big OF((unsigned long,
const unsigned char FAR *, unsigned));
# define TBLS 8
#else
# define TBLS 1
#endif /* BYFOUR */
#ifdef DYNAMIC_CRC_TABLE
local int crc_table_empty = 1;
local unsigned long FAR crc_table[TBLS][256];
local void make_crc_table OF((void));
#ifdef MAKECRCH
local void write_table OF((FILE *, const unsigned long FAR *));
#endif /* MAKECRCH */
/*
Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
Polynomials over GF(2) are represented in binary, one bit per coefficient,
with the lowest powers in the most significant bit. Then adding polynomials
is just exclusive-or, and multiplying a polynomial by x is a right shift by
one. If we call the above polynomial p, and represent a byte as the
polynomial q, also with the lowest power in the most significant bit (so the
byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
where a mod b means the remainder after dividing a by b.
This calculation is done using the shift-register method of multiplying and
taking the remainder. The register is initialized to zero, and for each
incoming bit, x^32 is added mod p to the register if the bit is a one (where
x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
x (which is shifting right by one and adding x^32 mod p if the bit shifted
out is a one). We start with the highest power (least significant bit) of
q and repeat for all eight bits of q.
The first table is simply the CRC of all possible eight bit values. This is
all the information needed to generate CRCs on data a byte at a time for all
combinations of CRC register values and incoming bytes. The remaining tables
allow for word-at-a-time CRC calculation for both big-endian and little-
endian machines, where a word is four bytes.
*/
local void make_crc_table()
{
unsigned long c;
int n, k;
unsigned long poly; /* polynomial exclusive-or pattern */
/* terms of polynomial defining this crc (except x^32): */
static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
/* make exclusive-or pattern from polynomial (0xedb88320UL) */
poly = 0UL;
for (n = 0; n < sizeof(p)/sizeof(unsigned char); n++)
poly |= 1UL << (31 - p[n]);
/* generate a crc for every 8-bit value */
for (n = 0; n < 256; n++) {
c = (unsigned long)n;
for (k = 0; k < 8; k++)
c = c & 1 ? poly ^ (c >> 1) : c >> 1;
crc_table[0][n] = c;
}
#ifdef BYFOUR
/* generate crc for each value followed by one, two, and three zeros, and
then the byte reversal of those as well as the first table */
for (n = 0; n < 256; n++) {
c = crc_table[0][n];
crc_table[4][n] = REV(c);
for (k = 1; k < 4; k++) {
c = crc_table[0][c & 0xff] ^ (c >> 8);
crc_table[k][n] = c;
crc_table[k + 4][n] = REV(c);
}
}
#endif /* BYFOUR */
crc_table_empty = 0;
#ifdef MAKECRCH
/* write out CRC tables to crc32.h */
{
FILE *out;
out = fopen("crc32.h", "w");
if (out == NULL) return;
fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
fprintf(out, "local const unsigned long FAR ");
fprintf(out, "crc_table[TBLS][256] =\n{\n {\n");
write_table(out, crc_table[0]);
# ifdef BYFOUR
fprintf(out, "#ifdef BYFOUR\n");
for (k = 1; k < 8; k++) {
fprintf(out, " },\n {\n");
write_table(out, crc_table[k]);
}
fprintf(out, "#endif\n");
# endif /* BYFOUR */
fprintf(out, " }\n};\n");
fclose(out);
}
#endif /* MAKECRCH */
}
#ifdef MAKECRCH
local void write_table(out, table)
FILE *out;
const unsigned long FAR *table;
{
int n;
for (n = 0; n < 256; n++)
fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ", table[n],
n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
}
#endif /* MAKECRCH */
#else /* !DYNAMIC_CRC_TABLE */
/* ========================================================================
* Tables of CRC-32s of all single-byte values, made by make_crc_table().
*/
#include "crc32.h"
#endif /* DYNAMIC_CRC_TABLE */
/* =========================================================================
* This function can be used by asm versions of crc32()
*/
const unsigned long FAR * ZEXPORT get_crc_table()
{
#ifdef DYNAMIC_CRC_TABLE
if (crc_table_empty) make_crc_table();
#endif /* DYNAMIC_CRC_TABLE */
return (const unsigned long FAR *)crc_table;
}
/* ========================================================================= */
#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
/* ========================================================================= */
unsigned long ZEXPORT crc32(crc, buf, len)
unsigned long crc;
const unsigned char FAR *buf;
unsigned len;
{
if (buf == Z_NULL) return 0UL;
#ifdef DYNAMIC_CRC_TABLE
if (crc_table_empty)
make_crc_table();
#endif /* DYNAMIC_CRC_TABLE */
#ifdef BYFOUR
if (sizeof(void *) == sizeof(ptrdiff_t)) {
u4 endian;
endian = 1;
if (*((unsigned char *)(&endian)))
return crc32_little(crc, buf, len);
else
return crc32_big(crc, buf, len);
}
#endif /* BYFOUR */
crc = crc ^ 0xffffffffUL;
while (len >= 8) {
DO8;
len -= 8;
}
if (len) do {
DO1;
} while (--len);
return crc ^ 0xffffffffUL;
}
#ifdef BYFOUR
/* ========================================================================= */
#define DOLIT4 c ^= *buf4++; \
c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
/* ========================================================================= */
local unsigned long crc32_little(crc, buf, len)
unsigned long crc;
const unsigned char FAR *buf;
unsigned len;
{
register u4 c;
register const u4 FAR *buf4;
c = (u4)crc;
c = ~c;
while (len && ((ptrdiff_t)buf & 3)) {
c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
len--;
}
buf4 = (const u4 FAR *)buf;
while (len >= 32) {
DOLIT32;
len -= 32;
}
while (len >= 4) {
DOLIT4;
len -= 4;
}
buf = (const unsigned char FAR *)buf4;
if (len) do {
c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
} while (--len);
c = ~c;
return (unsigned long)c;
}
/* ========================================================================= */
#define DOBIG4 c ^= *++buf4; \
c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
/* ========================================================================= */
local unsigned long crc32_big(crc, buf, len)
unsigned long crc;
const unsigned char FAR *buf;
unsigned len;
{
register u4 c;
register const u4 FAR *buf4;
c = REV((u4)crc);
c = ~c;
while (len && ((ptrdiff_t)buf & 3)) {
c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
len--;
}
buf4 = (const u4 FAR *)buf;
buf4--;
while (len >= 32) {
DOBIG32;
len -= 32;
}
while (len >= 4) {
DOBIG4;
len -= 4;
}
buf4++;
buf = (const unsigned char FAR *)buf4;
if (len) do {
c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
} while (--len);
c = ~c;
return (unsigned long)(REV(c));
}
#endif /* BYFOUR */

View File

@@ -1,441 +0,0 @@
/* crc32.h -- tables for rapid CRC calculation
* Generated automatically by crc32.c
*/
local const unsigned long FAR crc_table[TBLS][256] =
{
{
0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
0x2d02ef8dUL
#ifdef BYFOUR
},
{
0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
0x9324fd72UL
},
{
0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
0xbe9834edUL
},
{
0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
0xde0506f1UL
},
{
0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL,
0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL,
0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL,
0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL,
0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL,
0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL,
0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL,
0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL,
0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL,
0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL,
0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL,
0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL,
0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL,
0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL,
0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL,
0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL,
0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL,
0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL,
0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL,
0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL,
0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL,
0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL,
0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL,
0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL,
0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL,
0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL,
0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL,
0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL,
0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL,
0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL,
0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL,
0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL,
0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL,
0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL,
0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL,
0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL,
0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL,
0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL,
0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL,
0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL,
0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL,
0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL,
0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL,
0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL,
0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL,
0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL,
0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL,
0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL,
0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL,
0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL,
0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL,
0x8def022dUL
},
{
0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL,
0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL,
0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL,
0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL,
0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL,
0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL,
0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL,
0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL,
0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL,
0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL,
0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL,
0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL,
0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL,
0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL,
0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL,
0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL,
0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL,
0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL,
0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL,
0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL,
0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL,
0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL,
0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL,
0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL,
0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL,
0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL,
0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL,
0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL,
0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL,
0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL,
0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL,
0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL,
0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL,
0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL,
0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL,
0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL,
0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL,
0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL,
0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL,
0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL,
0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL,
0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL,
0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL,
0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL,
0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL,
0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL,
0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL,
0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL,
0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL,
0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL,
0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL,
0x72fd2493UL
},
{
0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL,
0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL,
0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL,
0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL,
0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL,
0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL,
0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL,
0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL,
0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL,
0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL,
0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL,
0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL,
0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL,
0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL,
0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL,
0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL,
0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL,
0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL,
0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL,
0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL,
0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL,
0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL,
0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL,
0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL,
0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL,
0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL,
0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL,
0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL,
0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL,
0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL,
0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL,
0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL,
0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL,
0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL,
0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL,
0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL,
0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL,
0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL,
0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL,
0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL,
0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL,
0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL,
0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL,
0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL,
0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL,
0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL,
0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL,
0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL,
0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL,
0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL,
0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL,
0xed3498beUL
},
{
0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL,
0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL,
0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL,
0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL,
0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL,
0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL,
0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL,
0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL,
0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL,
0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL,
0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL,
0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL,
0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL,
0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL,
0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL,
0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL,
0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL,
0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL,
0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL,
0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL,
0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL,
0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL,
0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL,
0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL,
0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL,
0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL,
0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL,
0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL,
0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL,
0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL,
0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL,
0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL,
0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL,
0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL,
0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL,
0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL,
0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL,
0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL,
0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL,
0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL,
0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL,
0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL,
0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL,
0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL,
0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL,
0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL,
0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL,
0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL,
0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL,
0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL,
0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL,
0xf10605deUL
#endif
}
};

File diff suppressed because it is too large Load Diff

View File

@@ -1,326 +0,0 @@
/* deflate.h -- internal compression state
* Copyright (C) 1995-2002 Jean-loup Gailly
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
/* @(#) $Id$ */
#ifndef DEFLATE_H
#define DEFLATE_H
#include "zutil.h"
/* define NO_GZIP when compiling if you want to disable gzip header and
trailer creation by deflate(). NO_GZIP would be used to avoid linking in
the crc code when it is not needed. For shared libraries, gzip encoding
should be left enabled. */
#ifndef NO_GZIP
# define GZIP
#endif
/* ===========================================================================
* Internal compression state.
*/
#define LENGTH_CODES 29
/* number of length codes, not counting the special END_BLOCK code */
#define LITERALS 256
/* number of literal bytes 0..255 */
#define L_CODES (LITERALS+1+LENGTH_CODES)
/* number of Literal or Length codes, including the END_BLOCK code */
#define D_CODES 30
/* number of distance codes */
#define BL_CODES 19
/* number of codes used to transfer the bit lengths */
#define HEAP_SIZE (2*L_CODES+1)
/* maximum heap size */
#define MAX_BITS 15
/* All codes must not exceed MAX_BITS bits */
#define INIT_STATE 42
#define BUSY_STATE 113
#define FINISH_STATE 666
/* Stream status */
/* Data structure describing a single value and its code string. */
typedef struct ct_data_s {
union {
ush freq; /* frequency count */
ush code; /* bit string */
} fc;
union {
ush dad; /* father node in Huffman tree */
ush len; /* length of bit string */
} dl;
} FAR ct_data;
#define Freq fc.freq
#define Code fc.code
#define Dad dl.dad
#define Len dl.len
typedef struct static_tree_desc_s static_tree_desc;
typedef struct tree_desc_s {
ct_data *dyn_tree; /* the dynamic tree */
int max_code; /* largest code with non zero frequency */
static_tree_desc *stat_desc; /* the corresponding static tree */
} FAR tree_desc;
typedef ush Pos;
typedef Pos FAR Posf;
typedef unsigned IPos;
/* A Pos is an index in the character window. We use short instead of int to
* save space in the various tables. IPos is used only for parameter passing.
*/
typedef struct internal_state {
z_streamp strm; /* pointer back to this zlib stream */
int status; /* as the name implies */
Bytef *pending_buf; /* output still pending */
ulg pending_buf_size; /* size of pending_buf */
Bytef *pending_out; /* next pending byte to output to the stream */
int pending; /* nb of bytes in the pending buffer */
int wrap; /* bit 0 true for zlib, bit 1 true for gzip */
Byte data_type; /* UNKNOWN, BINARY or ASCII */
Byte method; /* STORED (for zip only) or DEFLATED */
int last_flush; /* value of flush param for previous deflate call */
/* used by deflate.c: */
uInt w_size; /* LZ77 window size (32K by default) */
uInt w_bits; /* log2(w_size) (8..16) */
uInt w_mask; /* w_size - 1 */
Bytef *window;
/* Sliding window. Input bytes are read into the second half of the window,
* and move to the first half later to keep a dictionary of at least wSize
* bytes. With this organization, matches are limited to a distance of
* wSize-MAX_MATCH bytes, but this ensures that IO is always
* performed with a length multiple of the block size. Also, it limits
* the window size to 64K, which is quite useful on MSDOS.
* To do: use the user input buffer as sliding window.
*/
ulg window_size;
/* Actual size of window: 2*wSize, except when the user input buffer
* is directly used as sliding window.
*/
Posf *prev;
/* Link to older string with same hash index. To limit the size of this
* array to 64K, this link is maintained only for the last 32K strings.
* An index in this array is thus a window index modulo 32K.
*/
Posf *head; /* Heads of the hash chains or NIL. */
uInt ins_h; /* hash index of string to be inserted */
uInt hash_size; /* number of elements in hash table */
uInt hash_bits; /* log2(hash_size) */
uInt hash_mask; /* hash_size-1 */
uInt hash_shift;
/* Number of bits by which ins_h must be shifted at each input
* step. It must be such that after MIN_MATCH steps, the oldest
* byte no longer takes part in the hash key, that is:
* hash_shift * MIN_MATCH >= hash_bits
*/
long block_start;
/* Window position at the beginning of the current output block. Gets
* negative when the window is moved backwards.
*/
uInt match_length; /* length of best match */
IPos prev_match; /* previous match */
int match_available; /* set if previous match exists */
uInt strstart; /* start of string to insert */
uInt match_start; /* start of matching string */
uInt lookahead; /* number of valid bytes ahead in window */
uInt prev_length;
/* Length of the best match at previous step. Matches not greater than this
* are discarded. This is used in the lazy match evaluation.
*/
uInt max_chain_length;
/* To speed up deflation, hash chains are never searched beyond this
* length. A higher limit improves compression ratio but degrades the
* speed.
*/
uInt max_lazy_match;
/* Attempt to find a better match only when the current match is strictly
* smaller than this value. This mechanism is used only for compression
* levels >= 4.
*/
# define max_insert_length max_lazy_match
/* Insert new strings in the hash table only if the match length is not
* greater than this length. This saves time but degrades compression.
* max_insert_length is used only for compression levels <= 3.
*/
int level; /* compression level (1..9) */
int strategy; /* favor or force Huffman coding*/
uInt good_match;
/* Use a faster search when the previous match is longer than this */
int nice_match; /* Stop searching when current match exceeds this */
/* used by trees.c: */
/* Didn't use ct_data typedef below to supress compiler warning */
struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */
struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */
struct tree_desc_s l_desc; /* desc. for literal tree */
struct tree_desc_s d_desc; /* desc. for distance tree */
struct tree_desc_s bl_desc; /* desc. for bit length tree */
ush bl_count[MAX_BITS+1];
/* number of codes at each bit length for an optimal tree */
int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */
int heap_len; /* number of elements in the heap */
int heap_max; /* element of largest frequency */
/* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
* The same heap array is used to build all trees.
*/
uch depth[2*L_CODES+1];
/* Depth of each subtree used as tie breaker for trees of equal frequency
*/
uchf *l_buf; /* buffer for literals or lengths */
uInt lit_bufsize;
/* Size of match buffer for literals/lengths. There are 4 reasons for
* limiting lit_bufsize to 64K:
* - frequencies can be kept in 16 bit counters
* - if compression is not successful for the first block, all input
* data is still in the window so we can still emit a stored block even
* when input comes from standard input. (This can also be done for
* all blocks if lit_bufsize is not greater than 32K.)
* - if compression is not successful for a file smaller than 64K, we can
* even emit a stored file instead of a stored block (saving 5 bytes).
* This is applicable only for zip (not gzip or zlib).
* - creating new Huffman trees less frequently may not provide fast
* adaptation to changes in the input data statistics. (Take for
* example a binary file with poorly compressible code followed by
* a highly compressible string table.) Smaller buffer sizes give
* fast adaptation but have of course the overhead of transmitting
* trees more frequently.
* - I can't count above 4
*/
uInt last_lit; /* running index in l_buf */
ushf *d_buf;
/* Buffer for distances. To simplify the code, d_buf and l_buf have
* the same number of elements. To use different lengths, an extra flag
* array would be necessary.
*/
ulg opt_len; /* bit length of current block with optimal trees */
ulg static_len; /* bit length of current block with static trees */
uInt matches; /* number of string matches in current block */
int last_eob_len; /* bit length of EOB code for last block */
#ifdef DEBUG
ulg compressed_len; /* total bit length of compressed file mod 2^32 */
ulg bits_sent; /* bit length of compressed data sent mod 2^32 */
#endif
ush bi_buf;
/* Output buffer. bits are inserted starting at the bottom (least
* significant bits).
*/
int bi_valid;
/* Number of valid bits in bi_buf. All bits above the last valid bit
* are always zero.
*/
} FAR deflate_state;
/* Output a byte on the stream.
* IN assertion: there is enough room in pending_buf.
*/
#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);}
#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
/* Minimum amount of lookahead, except at the end of the input file.
* See deflate.c for comments about the MIN_MATCH+1.
*/
#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD)
/* In order to simplify the code, particularly on 16 bit machines, match
* distances are limited to MAX_DIST instead of WSIZE.
*/
/* in trees.c */
void _tr_init OF((deflate_state *s));
int _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
void _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len,
int eof));
void _tr_align OF((deflate_state *s));
void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
int eof));
#define d_code(dist) \
((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)])
/* Mapping from a distance to a distance code. dist is the distance - 1 and
* must not have side effects. _dist_code[256] and _dist_code[257] are never
* used.
*/
#ifndef DEBUG
/* Inline versions of _tr_tally for speed: */
#if defined(GEN_TREES_H) || !defined(STDC)
extern uch _length_code[];
extern uch _dist_code[];
#else
extern const uch _length_code[];
extern const uch _dist_code[];
#endif
# define _tr_tally_lit(s, c, flush) \
{ uch cc = (c); \
s->d_buf[s->last_lit] = 0; \
s->l_buf[s->last_lit++] = cc; \
s->dyn_ltree[cc].Freq++; \
flush = (s->last_lit == s->lit_bufsize-1); \
}
# define _tr_tally_dist(s, distance, length, flush) \
{ uch len = (length); \
ush dist = (distance); \
s->d_buf[s->last_lit] = dist; \
s->l_buf[s->last_lit++] = len; \
dist--; \
s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
s->dyn_dtree[d_code(dist)].Freq++; \
flush = (s->last_lit == s->lit_bufsize-1); \
}
#else
# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
# define _tr_tally_dist(s, distance, length, flush) \
flush = _tr_tally(s, distance, length)
#endif
#endif /* DEFLATE_H */

View File

@@ -1,567 +0,0 @@
/* example.c -- usage example of the zlib compression library
* Copyright (C) 1995-2003 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#include <stdio.h>
#include "zlib.h"
#ifdef STDC
# include <string.h>
# include <stdlib.h>
#else
extern void exit OF((int));
#endif
#if defined(VMS) || defined(RISCOS)
# define TESTFILE "foo-gz"
#else
# define TESTFILE "foo.gz"
#endif
#define CHECK_ERR(err, msg) { \
if (err != Z_OK) { \
fprintf(stderr, "%s error: %d\n", msg, err); \
exit(1); \
} \
}
const char hello[] = "hello, hello!";
/* "hello world" would be more standard, but the repeated "hello"
* stresses the compression code better, sorry...
*/
const char dictionary[] = "hello";
uLong dictId; /* Adler32 value of the dictionary */
void test_compress OF((Byte *compr, uLong comprLen,
Byte *uncompr, uLong uncomprLen));
void test_gzio OF((const char *fname,
Byte *uncompr, uLong uncomprLen));
void test_deflate OF((Byte *compr, uLong comprLen));
void test_inflate OF((Byte *compr, uLong comprLen,
Byte *uncompr, uLong uncomprLen));
void test_large_deflate OF((Byte *compr, uLong comprLen,
Byte *uncompr, uLong uncomprLen));
void test_large_inflate OF((Byte *compr, uLong comprLen,
Byte *uncompr, uLong uncomprLen));
void test_flush OF((Byte *compr, uLong *comprLen));
void test_sync OF((Byte *compr, uLong comprLen,
Byte *uncompr, uLong uncomprLen));
void test_dict_deflate OF((Byte *compr, uLong comprLen));
void test_dict_inflate OF((Byte *compr, uLong comprLen,
Byte *uncompr, uLong uncomprLen));
int main OF((int argc, char *argv[]));
/* ===========================================================================
* Test compress() and uncompress()
*/
void test_compress(compr, comprLen, uncompr, uncomprLen)
Byte *compr, *uncompr;
uLong comprLen, uncomprLen;
{
int err;
uLong len = (uLong)strlen(hello)+1;
err = compress(compr, &comprLen, (const Bytef*)hello, len);
CHECK_ERR(err, "compress");
strcpy((char*)uncompr, "garbage");
err = uncompress(uncompr, &uncomprLen, compr, comprLen);
CHECK_ERR(err, "uncompress");
if (strcmp((char*)uncompr, hello)) {
fprintf(stderr, "bad uncompress\n");
exit(1);
} else {
printf("uncompress(): %s\n", (char *)uncompr);
}
}
/* ===========================================================================
* Test read/write of .gz files
*/
void test_gzio(fname, uncompr, uncomprLen)
const char *fname; /* compressed file name */
Byte *uncompr;
uLong uncomprLen;
{
#ifdef NO_GZCOMPRESS
fprintf(stderr, "NO_GZCOMPRESS -- gz* functions cannot compress\n");
#else
int err;
int len = (int)strlen(hello)+1;
gzFile file;
z_off_t pos;
file = gzopen(fname, "wb");
if (file == NULL) {
fprintf(stderr, "gzopen error\n");
exit(1);
}
gzputc(file, 'h');
if (gzputs(file, "ello") != 4) {
fprintf(stderr, "gzputs err: %s\n", gzerror(file, &err));
exit(1);
}
if (gzprintf(file, ", %s!", "hello") != 8) {
fprintf(stderr, "gzprintf err: %s\n", gzerror(file, &err));
exit(1);
}
gzseek(file, 1L, SEEK_CUR); /* add one zero byte */
gzclose(file);
file = gzopen(fname, "rb");
if (file == NULL) {
fprintf(stderr, "gzopen error\n");
exit(1);
}
strcpy((char*)uncompr, "garbage");
if (gzread(file, uncompr, (unsigned)uncomprLen) != len) {
fprintf(stderr, "gzread err: %s\n", gzerror(file, &err));
exit(1);
}
if (strcmp((char*)uncompr, hello)) {
fprintf(stderr, "bad gzread: %s\n", (char*)uncompr);
exit(1);
} else {
printf("gzread(): %s\n", (char*)uncompr);
}
pos = gzseek(file, -8L, SEEK_CUR);
if (pos != 6 || gztell(file) != pos) {
fprintf(stderr, "gzseek error, pos=%ld, gztell=%ld\n",
(long)pos, (long)gztell(file));
exit(1);
}
if (gzgetc(file) != ' ') {
fprintf(stderr, "gzgetc error\n");
exit(1);
}
if (gzungetc(' ', file) != ' ') {
fprintf(stderr, "gzungetc error\n");
exit(1);
}
gzgets(file, (char*)uncompr, (int)uncomprLen);
if (strlen((char*)uncompr) != 7) { /* " hello!" */
fprintf(stderr, "gzgets err after gzseek: %s\n", gzerror(file, &err));
exit(1);
}
if (strcmp((char*)uncompr, hello + 6)) {
fprintf(stderr, "bad gzgets after gzseek\n");
exit(1);
} else {
printf("gzgets() after gzseek: %s\n", (char*)uncompr);
}
gzclose(file);
#endif
}
/* ===========================================================================
* Test deflate() with small buffers
*/
void test_deflate(compr, comprLen)
Byte *compr;
uLong comprLen;
{
z_stream c_stream; /* compression stream */
int err;
uLong len = (uLong)strlen(hello)+1;
c_stream.zalloc = (alloc_func)0;
c_stream.zfree = (free_func)0;
c_stream.opaque = (voidpf)0;
err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION);
CHECK_ERR(err, "deflateInit");
c_stream.next_in = (Bytef*)hello;
c_stream.next_out = compr;
while (c_stream.total_in != len && c_stream.total_out < comprLen) {
c_stream.avail_in = c_stream.avail_out = 1; /* force small buffers */
err = deflate(&c_stream, Z_NO_FLUSH);
CHECK_ERR(err, "deflate");
}
/* Finish the stream, still forcing small buffers: */
for (;;) {
c_stream.avail_out = 1;
err = deflate(&c_stream, Z_FINISH);
if (err == Z_STREAM_END) break;
CHECK_ERR(err, "deflate");
}
err = deflateEnd(&c_stream);
CHECK_ERR(err, "deflateEnd");
}
/* ===========================================================================
* Test inflate() with small buffers
*/
void test_inflate(compr, comprLen, uncompr, uncomprLen)
Byte *compr, *uncompr;
uLong comprLen, uncomprLen;
{
int err;
z_stream d_stream; /* decompression stream */
strcpy((char*)uncompr, "garbage");
d_stream.zalloc = (alloc_func)0;
d_stream.zfree = (free_func)0;
d_stream.opaque = (voidpf)0;
d_stream.next_in = compr;
d_stream.avail_in = 0;
d_stream.next_out = uncompr;
err = inflateInit(&d_stream);
CHECK_ERR(err, "inflateInit");
while (d_stream.total_out < uncomprLen && d_stream.total_in < comprLen) {
d_stream.avail_in = d_stream.avail_out = 1; /* force small buffers */
err = inflate(&d_stream, Z_NO_FLUSH);
if (err == Z_STREAM_END) break;
CHECK_ERR(err, "inflate");
}
err = inflateEnd(&d_stream);
CHECK_ERR(err, "inflateEnd");
if (strcmp((char*)uncompr, hello)) {
fprintf(stderr, "bad inflate\n");
exit(1);
} else {
printf("inflate(): %s\n", (char *)uncompr);
}
}
/* ===========================================================================
* Test deflate() with large buffers and dynamic change of compression level
*/
void test_large_deflate(compr, comprLen, uncompr, uncomprLen)
Byte *compr, *uncompr;
uLong comprLen, uncomprLen;
{
z_stream c_stream; /* compression stream */
int err;
c_stream.zalloc = (alloc_func)0;
c_stream.zfree = (free_func)0;
c_stream.opaque = (voidpf)0;
err = deflateInit(&c_stream, Z_BEST_SPEED);
CHECK_ERR(err, "deflateInit");
c_stream.next_out = compr;
c_stream.avail_out = (uInt)comprLen;
/* At this point, uncompr is still mostly zeroes, so it should compress
* very well:
*/
c_stream.next_in = uncompr;
c_stream.avail_in = (uInt)uncomprLen;
err = deflate(&c_stream, Z_NO_FLUSH);
CHECK_ERR(err, "deflate");
if (c_stream.avail_in != 0) {
fprintf(stderr, "deflate not greedy\n");
exit(1);
}
/* Feed in already compressed data and switch to no compression: */
deflateParams(&c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY);
c_stream.next_in = compr;
c_stream.avail_in = (uInt)comprLen/2;
err = deflate(&c_stream, Z_NO_FLUSH);
CHECK_ERR(err, "deflate");
/* Switch back to compressing mode: */
deflateParams(&c_stream, Z_BEST_COMPRESSION, Z_FILTERED);
c_stream.next_in = uncompr;
c_stream.avail_in = (uInt)uncomprLen;
err = deflate(&c_stream, Z_NO_FLUSH);
CHECK_ERR(err, "deflate");
err = deflate(&c_stream, Z_FINISH);
if (err != Z_STREAM_END) {
fprintf(stderr, "deflate should report Z_STREAM_END\n");
exit(1);
}
err = deflateEnd(&c_stream);
CHECK_ERR(err, "deflateEnd");
}
/* ===========================================================================
* Test inflate() with large buffers
*/
void test_large_inflate(compr, comprLen, uncompr, uncomprLen)
Byte *compr, *uncompr;
uLong comprLen, uncomprLen;
{
int err;
z_stream d_stream; /* decompression stream */
strcpy((char*)uncompr, "garbage");
d_stream.zalloc = (alloc_func)0;
d_stream.zfree = (free_func)0;
d_stream.opaque = (voidpf)0;
d_stream.next_in = compr;
d_stream.avail_in = (uInt)comprLen;
err = inflateInit(&d_stream);
CHECK_ERR(err, "inflateInit");
for (;;) {
d_stream.next_out = uncompr; /* discard the output */
d_stream.avail_out = (uInt)uncomprLen;
err = inflate(&d_stream, Z_NO_FLUSH);
if (err == Z_STREAM_END) break;
CHECK_ERR(err, "large inflate");
}
err = inflateEnd(&d_stream);
CHECK_ERR(err, "inflateEnd");
if (d_stream.total_out != 2*uncomprLen + comprLen/2) {
fprintf(stderr, "bad large inflate: %ld\n", d_stream.total_out);
exit(1);
} else {
printf("large_inflate(): OK\n");
}
}
/* ===========================================================================
* Test deflate() with full flush
*/
void test_flush(compr, comprLen)
Byte *compr;
uLong *comprLen;
{
z_stream c_stream; /* compression stream */
int err;
uInt len = (uInt)strlen(hello)+1;
c_stream.zalloc = (alloc_func)0;
c_stream.zfree = (free_func)0;
c_stream.opaque = (voidpf)0;
err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION);
CHECK_ERR(err, "deflateInit");
c_stream.next_in = (Bytef*)hello;
c_stream.next_out = compr;
c_stream.avail_in = 3;
c_stream.avail_out = (uInt)*comprLen;
err = deflate(&c_stream, Z_FULL_FLUSH);
CHECK_ERR(err, "deflate");
compr[3]++; /* force an error in first compressed block */
c_stream.avail_in = len - 3;
err = deflate(&c_stream, Z_FINISH);
if (err != Z_STREAM_END) {
CHECK_ERR(err, "deflate");
}
err = deflateEnd(&c_stream);
CHECK_ERR(err, "deflateEnd");
*comprLen = c_stream.total_out;
}
/* ===========================================================================
* Test inflateSync()
*/
void test_sync(compr, comprLen, uncompr, uncomprLen)
Byte *compr, *uncompr;
uLong comprLen, uncomprLen;
{
int err;
z_stream d_stream; /* decompression stream */
strcpy((char*)uncompr, "garbage");
d_stream.zalloc = (alloc_func)0;
d_stream.zfree = (free_func)0;
d_stream.opaque = (voidpf)0;
d_stream.next_in = compr;
d_stream.avail_in = 2; /* just read the zlib header */
err = inflateInit(&d_stream);
CHECK_ERR(err, "inflateInit");
d_stream.next_out = uncompr;
d_stream.avail_out = (uInt)uncomprLen;
inflate(&d_stream, Z_NO_FLUSH);
CHECK_ERR(err, "inflate");
d_stream.avail_in = (uInt)comprLen-2; /* read all compressed data */
err = inflateSync(&d_stream); /* but skip the damaged part */
CHECK_ERR(err, "inflateSync");
err = inflate(&d_stream, Z_FINISH);
if (err != Z_DATA_ERROR) {
fprintf(stderr, "inflate should report DATA_ERROR\n");
/* Because of incorrect adler32 */
exit(1);
}
err = inflateEnd(&d_stream);
CHECK_ERR(err, "inflateEnd");
printf("after inflateSync(): hel%s\n", (char *)uncompr);
}
/* ===========================================================================
* Test deflate() with preset dictionary
*/
void test_dict_deflate(compr, comprLen)
Byte *compr;
uLong comprLen;
{
z_stream c_stream; /* compression stream */
int err;
c_stream.zalloc = (alloc_func)0;
c_stream.zfree = (free_func)0;
c_stream.opaque = (voidpf)0;
err = deflateInit(&c_stream, Z_BEST_COMPRESSION);
CHECK_ERR(err, "deflateInit");
err = deflateSetDictionary(&c_stream,
(const Bytef*)dictionary, sizeof(dictionary));
CHECK_ERR(err, "deflateSetDictionary");
dictId = c_stream.adler;
c_stream.next_out = compr;
c_stream.avail_out = (uInt)comprLen;
c_stream.next_in = (Bytef*)hello;
c_stream.avail_in = (uInt)strlen(hello)+1;
err = deflate(&c_stream, Z_FINISH);
if (err != Z_STREAM_END) {
fprintf(stderr, "deflate should report Z_STREAM_END\n");
exit(1);
}
err = deflateEnd(&c_stream);
CHECK_ERR(err, "deflateEnd");
}
/* ===========================================================================
* Test inflate() with a preset dictionary
*/
void test_dict_inflate(compr, comprLen, uncompr, uncomprLen)
Byte *compr, *uncompr;
uLong comprLen, uncomprLen;
{
int err;
z_stream d_stream; /* decompression stream */
strcpy((char*)uncompr, "garbage");
d_stream.zalloc = (alloc_func)0;
d_stream.zfree = (free_func)0;
d_stream.opaque = (voidpf)0;
d_stream.next_in = compr;
d_stream.avail_in = (uInt)comprLen;
err = inflateInit(&d_stream);
CHECK_ERR(err, "inflateInit");
d_stream.next_out = uncompr;
d_stream.avail_out = (uInt)uncomprLen;
for (;;) {
err = inflate(&d_stream, Z_NO_FLUSH);
if (err == Z_STREAM_END) break;
if (err == Z_NEED_DICT) {
if (d_stream.adler != dictId) {
fprintf(stderr, "unexpected dictionary");
exit(1);
}
err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary,
sizeof(dictionary));
}
CHECK_ERR(err, "inflate with dict");
}
err = inflateEnd(&d_stream);
CHECK_ERR(err, "inflateEnd");
if (strcmp((char*)uncompr, hello)) {
fprintf(stderr, "bad inflate with dict\n");
exit(1);
} else {
printf("inflate with dictionary: %s\n", (char *)uncompr);
}
}
/* ===========================================================================
* Usage: example [output.gz [input.gz]]
*/
int main(argc, argv)
int argc;
char *argv[];
{
Byte *compr, *uncompr;
uLong comprLen = 10000*sizeof(int); /* don't overflow on MSDOS */
uLong uncomprLen = comprLen;
static const char* myVersion = ZLIB_VERSION;
if (zlibVersion()[0] != myVersion[0]) {
fprintf(stderr, "incompatible zlib version\n");
exit(1);
} else if (strcmp(zlibVersion(), ZLIB_VERSION) != 0) {
fprintf(stderr, "warning: different zlib version\n");
}
printf("zlib version %s = 0x%04x, compile flags = 0x%lx\n",
ZLIB_VERSION, ZLIB_VERNUM, zlibCompileFlags());
compr = (Byte*)calloc((uInt)comprLen, 1);
uncompr = (Byte*)calloc((uInt)uncomprLen, 1);
/* compr and uncompr are cleared to avoid reading uninitialized
* data and to ensure that uncompr compresses well.
*/
if (compr == Z_NULL || uncompr == Z_NULL) {
printf("out of memory\n");
exit(1);
}
test_compress(compr, comprLen, uncompr, uncomprLen);
test_gzio((argc > 1 ? argv[1] : TESTFILE),
uncompr, uncomprLen);
test_deflate(compr, comprLen);
test_inflate(compr, comprLen, uncompr, uncomprLen);
test_large_deflate(compr, comprLen, uncompr, uncomprLen);
test_large_inflate(compr, comprLen, uncompr, uncomprLen);
test_flush(compr, &comprLen);
test_sync(compr, comprLen, uncompr, uncomprLen);
comprLen = uncomprLen;
test_dict_deflate(compr, comprLen);
test_dict_inflate(compr, comprLen, uncompr, uncomprLen);
free(compr);
free(uncompr);
return 0;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,619 +0,0 @@
/* infback.c -- inflate using a call-back interface
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/*
This code is largely copied from inflate.c. Normally either infback.o or
inflate.o would be linked into an application--not both. The interface
with inffast.c is retained so that optimized assembler-coded versions of
inflate_fast() can be used with either inflate.c or infback.c.
*/
#include "zutil.h"
#include "inftrees.h"
#include "inflate.h"
#include "inffast.h"
/* function prototypes */
local void fixedtables OF((struct inflate_state FAR *state));
/*
strm provides memory allocation functions in zalloc and zfree, or
Z_NULL to use the library memory allocation functions.
windowBits is in the range 8..15, and window is a user-supplied
window and output buffer that is 2**windowBits bytes.
*/
int ZEXPORT inflateBackInit_(strm, windowBits, window, version, stream_size)
z_stream FAR *strm;
int windowBits;
unsigned char FAR *window;
const char *version;
int stream_size;
{
struct inflate_state FAR *state;
if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
stream_size != (int)(sizeof(z_stream)))
return Z_VERSION_ERROR;
if (strm == Z_NULL || window == Z_NULL ||
windowBits < 8 || windowBits > 15)
return Z_STREAM_ERROR;
strm->msg = Z_NULL; /* in case we return an error */
if (strm->zalloc == (alloc_func)0) {
strm->zalloc = zcalloc;
strm->opaque = (voidpf)0;
}
if (strm->zfree == (free_func)0) strm->zfree = zcfree;
state = (struct inflate_state FAR *)ZALLOC(strm, 1,
sizeof(struct inflate_state));
if (state == Z_NULL) return Z_MEM_ERROR;
Tracev((stderr, "inflate: allocated\n"));
strm->state = (voidpf)state;
state->wbits = windowBits;
state->wsize = 1U << windowBits;
state->window = window;
state->write = 0;
state->whave = 0;
return Z_OK;
}
/*
Return state with length and distance decoding tables and index sizes set to
fixed code decoding. Normally this returns fixed tables from inffixed.h.
If BUILDFIXED is defined, then instead this routine builds the tables the
first time it's called, and returns those tables the first time and
thereafter. This reduces the size of the code by about 2K bytes, in
exchange for a little execution time. However, BUILDFIXED should not be
used for threaded applications, since the rewriting of the tables and virgin
may not be thread-safe.
*/
local void fixedtables(state)
struct inflate_state FAR *state;
{
#ifdef BUILDFIXED
static int virgin = 1;
static code *lenfix, *distfix;
static code fixed[544];
/* build fixed huffman tables if first call (may not be thread safe) */
if (virgin) {
unsigned sym, bits;
static code *next;
/* literal/length table */
sym = 0;
while (sym < 144) state->lens[sym++] = 8;
while (sym < 256) state->lens[sym++] = 9;
while (sym < 280) state->lens[sym++] = 7;
while (sym < 288) state->lens[sym++] = 8;
next = fixed;
lenfix = next;
bits = 9;
inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work);
/* distance table */
sym = 0;
while (sym < 32) state->lens[sym++] = 5;
distfix = next;
bits = 5;
inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work);
/* do this just once */
virgin = 0;
}
#else /* !BUILDFIXED */
# include "inffixed.h"
#endif /* BUILDFIXED */
state->lencode = lenfix;
state->lenbits = 9;
state->distcode = distfix;
state->distbits = 5;
}
/* Macros for inflateBack(): */
/* Load returned state from inflate_fast() */
#define LOAD() \
do { \
put = strm->next_out; \
left = strm->avail_out; \
next = strm->next_in; \
have = strm->avail_in; \
hold = state->hold; \
bits = state->bits; \
} while (0)
/* Set state from registers for inflate_fast() */
#define RESTORE() \
do { \
strm->next_out = put; \
strm->avail_out = left; \
strm->next_in = next; \
strm->avail_in = have; \
state->hold = hold; \
state->bits = bits; \
} while (0)
/* Clear the input bit accumulator */
#define INITBITS() \
do { \
hold = 0; \
bits = 0; \
} while (0)
/* Assure that some input is available. If input is requested, but denied,
then return a Z_BUF_ERROR from inflateBack(). */
#define PULL() \
do { \
if (have == 0) { \
have = in(in_desc, &next); \
if (have == 0) { \
next = Z_NULL; \
ret = Z_BUF_ERROR; \
goto inf_leave; \
} \
} \
} while (0)
/* Get a byte of input into the bit accumulator, or return from inflateBack()
with an error if there is no input available. */
#define PULLBYTE() \
do { \
PULL(); \
have--; \
hold += (unsigned long)(*next++) << bits; \
bits += 8; \
} while (0)
/* Assure that there are at least n bits in the bit accumulator. If there is
not enough available input to do that, then return from inflateBack() with
an error. */
#define NEEDBITS(n) \
do { \
while (bits < (unsigned)(n)) \
PULLBYTE(); \
} while (0)
/* Return the low n bits of the bit accumulator (n < 16) */
#define BITS(n) \
((unsigned)hold & ((1U << (n)) - 1))
/* Remove n bits from the bit accumulator */
#define DROPBITS(n) \
do { \
hold >>= (n); \
bits -= (unsigned)(n); \
} while (0)
/* Remove zero to seven bits as needed to go to a byte boundary */
#define BYTEBITS() \
do { \
hold >>= bits & 7; \
bits -= bits & 7; \
} while (0)
/* Assure that some output space is available, by writing out the window
if it's full. If the write fails, return from inflateBack() with a
Z_BUF_ERROR. */
#define ROOM() \
do { \
if (left == 0) { \
put = state->window; \
left = state->wsize; \
state->whave = left; \
if (out(out_desc, put, left)) { \
ret = Z_BUF_ERROR; \
goto inf_leave; \
} \
} \
} while (0)
/*
strm provides the memory allocation functions and window buffer on input,
and provides information on the unused input on return. For Z_DATA_ERROR
returns, strm will also provide an error message.
in() and out() are the call-back input and output functions. When
inflateBack() needs more input, it calls in(). When inflateBack() has
filled the window with output, or when it completes with data in the
window, it calls out() to write out the data. The application must not
change the provided input until in() is called again or inflateBack()
returns. The application must not change the window/output buffer until
inflateBack() returns.
in() and out() are called with a descriptor parameter provided in the
inflateBack() call. This parameter can be a structure that provides the
information required to do the read or write, as well as accumulated
information on the input and output such as totals and check values.
in() should return zero on failure. out() should return non-zero on
failure. If either in() or out() fails, than inflateBack() returns a
Z_BUF_ERROR. strm->next_in can be checked for Z_NULL to see whether it
was in() or out() that caused in the error. Otherwise, inflateBack()
returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format
error, or Z_MEM_ERROR if it could not allocate memory for the state.
inflateBack() can also return Z_STREAM_ERROR if the input parameters
are not correct, i.e. strm is Z_NULL or the state was not initialized.
*/
int ZEXPORT inflateBack(strm, in, in_desc, out, out_desc)
z_stream FAR *strm;
in_func in;
void FAR *in_desc;
out_func out;
void FAR *out_desc;
{
struct inflate_state FAR *state;
unsigned char FAR *next; /* next input */
unsigned char FAR *put; /* next output */
unsigned have, left; /* available input and output */
unsigned long hold; /* bit buffer */
unsigned bits; /* bits in bit buffer */
unsigned copy; /* number of stored or match bytes to copy */
unsigned char FAR *from; /* where to copy match bytes from */
code this; /* current decoding table entry */
code last; /* parent table entry */
unsigned len; /* length to copy for repeats, bits to drop */
int ret; /* return code */
static const unsigned short order[19] = /* permutation of code lengths */
{16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
/* Check that the strm exists and that the state was initialized */
if (strm == Z_NULL || strm->state == Z_NULL)
return Z_STREAM_ERROR;
state = (struct inflate_state FAR *)strm->state;
/* Reset the state */
strm->msg = Z_NULL;
state->mode = TYPE;
state->last = 0;
state->whave = 0;
next = strm->next_in;
have = next != Z_NULL ? strm->avail_in : 0;
hold = 0;
bits = 0;
put = state->window;
left = state->wsize;
/* Inflate until end of block marked as last */
for (;;)
switch (state->mode) {
case TYPE:
/* determine and dispatch block type */
if (state->last) {
BYTEBITS();
state->mode = DONE;
break;
}
NEEDBITS(3);
state->last = BITS(1);
DROPBITS(1);
switch (BITS(2)) {
case 0: /* stored block */
Tracev((stderr, "inflate: stored block%s\n",
state->last ? " (last)" : ""));
state->mode = STORED;
break;
case 1: /* fixed block */
fixedtables(state);
Tracev((stderr, "inflate: fixed codes block%s\n",
state->last ? " (last)" : ""));
state->mode = LEN; /* decode codes */
break;
case 2: /* dynamic block */
Tracev((stderr, "inflate: dynamic codes block%s\n",
state->last ? " (last)" : ""));
state->mode = TABLE;
break;
case 3:
strm->msg = (char *)"invalid block type";
state->mode = BAD;
}
DROPBITS(2);
break;
case STORED:
/* get and verify stored block length */
BYTEBITS(); /* go to byte boundary */
NEEDBITS(32);
if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) {
strm->msg = (char *)"invalid stored block lengths";
state->mode = BAD;
break;
}
state->length = (unsigned)hold & 0xffff;
Tracev((stderr, "inflate: stored length %u\n",
state->length));
INITBITS();
/* copy stored block from input to output */
while (state->length != 0) {
copy = state->length;
PULL();
ROOM();
if (copy > have) copy = have;
if (copy > left) copy = left;
zmemcpy(put, next, copy);
have -= copy;
next += copy;
left -= copy;
put += copy;
state->length -= copy;
}
Tracev((stderr, "inflate: stored end\n"));
state->mode = TYPE;
break;
case TABLE:
/* get dynamic table entries descriptor */
NEEDBITS(14);
state->nlen = BITS(5) + 257;
DROPBITS(5);
state->ndist = BITS(5) + 1;
DROPBITS(5);
state->ncode = BITS(4) + 4;
DROPBITS(4);
#ifndef PKZIP_BUG_WORKAROUND
if (state->nlen > 286 || state->ndist > 30) {
strm->msg = (char *)"too many length or distance symbols";
state->mode = BAD;
break;
}
#endif
Tracev((stderr, "inflate: table sizes ok\n"));
/* get code length code lengths (not a typo) */
state->have = 0;
while (state->have < state->ncode) {
NEEDBITS(3);
state->lens[order[state->have++]] = (unsigned short)BITS(3);
DROPBITS(3);
}
while (state->have < 19)
state->lens[order[state->have++]] = 0;
state->next = state->codes;
state->lencode = (code const FAR *)(state->next);
state->lenbits = 7;
ret = inflate_table(CODES, state->lens, 19, &(state->next),
&(state->lenbits), state->work);
if (ret) {
strm->msg = (char *)"invalid code lengths set";
state->mode = BAD;
break;
}
Tracev((stderr, "inflate: code lengths ok\n"));
/* get length and distance code code lengths */
state->have = 0;
while (state->have < state->nlen + state->ndist) {
for (;;) {
this = state->lencode[BITS(state->lenbits)];
if ((unsigned)(this.bits) <= bits) break;
PULLBYTE();
}
if (this.val < 16) {
NEEDBITS(this.bits);
DROPBITS(this.bits);
state->lens[state->have++] = this.val;
}
else {
if (this.val == 16) {
NEEDBITS(this.bits + 2);
DROPBITS(this.bits);
if (state->have == 0) {
strm->msg = (char *)"invalid bit length repeat";
state->mode = BAD;
break;
}
len = (unsigned)(state->lens[state->have - 1]);
copy = 3 + BITS(2);
DROPBITS(2);
}
else if (this.val == 17) {
NEEDBITS(this.bits + 3);
DROPBITS(this.bits);
len = 0;
copy = 3 + BITS(3);
DROPBITS(3);
}
else {
NEEDBITS(this.bits + 7);
DROPBITS(this.bits);
len = 0;
copy = 11 + BITS(7);
DROPBITS(7);
}
if (state->have + copy > state->nlen + state->ndist) {
strm->msg = (char *)"invalid bit length repeat";
state->mode = BAD;
break;
}
while (copy--)
state->lens[state->have++] = (unsigned short)len;
}
}
/* build code tables */
state->next = state->codes;
state->lencode = (code const FAR *)(state->next);
state->lenbits = 9;
ret = inflate_table(LENS, state->lens, state->nlen, &(state->next),
&(state->lenbits), state->work);
if (ret) {
strm->msg = (char *)"invalid literal/lengths set";
state->mode = BAD;
break;
}
state->distcode = (code const FAR *)(state->next);
state->distbits = 6;
ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist,
&(state->next), &(state->distbits), state->work);
if (ret) {
strm->msg = (char *)"invalid distances set";
state->mode = BAD;
break;
}
Tracev((stderr, "inflate: codes ok\n"));
state->mode = LEN;
case LEN:
/* use inflate_fast() if we have enough input and output */
if (have >= 6 && left >= 258) {
RESTORE();
if (state->whave < state->wsize)
state->whave = state->wsize - left;
inflate_fast(strm, state->wsize);
LOAD();
break;
}
/* get a literal, length, or end-of-block code */
for (;;) {
this = state->lencode[BITS(state->lenbits)];
if ((unsigned)(this.bits) <= bits) break;
PULLBYTE();
}
if (this.op && (this.op & 0xf0) == 0) {
last = this;
for (;;) {
this = state->lencode[last.val +
(BITS(last.bits + last.op) >> last.bits)];
if ((unsigned)(last.bits + this.bits) <= bits) break;
PULLBYTE();
}
DROPBITS(last.bits);
}
DROPBITS(this.bits);
state->length = (unsigned)this.val;
/* process literal */
if (this.op == 0) {
Tracevv((stderr, this.val >= 0x20 && this.val < 0x7f ?
"inflate: literal '%c'\n" :
"inflate: literal 0x%02x\n", this.val));
ROOM();
*put++ = (unsigned char)(state->length);
left--;
state->mode = LEN;
break;
}
/* process end of block */
if (this.op & 32) {
Tracevv((stderr, "inflate: end of block\n"));
state->mode = TYPE;
break;
}
/* invalid code */
if (this.op & 64) {
strm->msg = (char *)"invalid literal/length code";
state->mode = BAD;
break;
}
/* length code -- get extra bits, if any */
state->extra = (unsigned)(this.op) & 15;
if (state->extra != 0) {
NEEDBITS(state->extra);
state->length += BITS(state->extra);
DROPBITS(state->extra);
}
Tracevv((stderr, "inflate: length %u\n", state->length));
/* get distance code */
for (;;) {
this = state->distcode[BITS(state->distbits)];
if ((unsigned)(this.bits) <= bits) break;
PULLBYTE();
}
if ((this.op & 0xf0) == 0) {
last = this;
for (;;) {
this = state->distcode[last.val +
(BITS(last.bits + last.op) >> last.bits)];
if ((unsigned)(last.bits + this.bits) <= bits) break;
PULLBYTE();
}
DROPBITS(last.bits);
}
DROPBITS(this.bits);
if (this.op & 64) {
strm->msg = (char *)"invalid distance code";
state->mode = BAD;
break;
}
state->offset = (unsigned)this.val;
/* get distance extra bits, if any */
state->extra = (unsigned)(this.op) & 15;
if (state->extra != 0) {
NEEDBITS(state->extra);
state->offset += BITS(state->extra);
DROPBITS(state->extra);
}
if (state->offset > state->wsize - (state->whave < state->wsize ?
left : 0)) {
strm->msg = (char *)"invalid distance too far back";
state->mode = BAD;
break;
}
Tracevv((stderr, "inflate: distance %u\n", state->offset));
/* copy match from window to output */
do {
ROOM();
copy = state->wsize - state->offset;
if (copy < left) {
from = put + copy;
copy = left - copy;
}
else {
from = put - state->offset;
copy = left;
}
if (copy > state->length) copy = state->length;
state->length -= copy;
left -= copy;
do {
*put++ = *from++;
} while (--copy);
} while (state->length != 0);
break;
case DONE:
/* inflate stream terminated properly -- write leftover output */
ret = Z_STREAM_END;
if (left < state->wsize) {
if (out(out_desc, state->window, state->wsize - left))
ret = Z_BUF_ERROR;
}
goto inf_leave;
case BAD:
ret = Z_DATA_ERROR;
goto inf_leave;
default: /* can't happen, but makes compilers happy */
ret = Z_STREAM_ERROR;
goto inf_leave;
}
/* Return unused input */
inf_leave:
strm->next_in = next;
strm->avail_in = have;
return ret;
}
int ZEXPORT inflateBackEnd(strm)
z_stream FAR *strm;
{
if (strm == Z_NULL || strm->state == Z_NULL || strm->zfree == (free_func)0)
return Z_STREAM_ERROR;
ZFREE(strm, strm->state);
strm->state = Z_NULL;
Tracev((stderr, "inflate: end\n"));
return Z_OK;
}

View File

@@ -1,305 +0,0 @@
/* inffast.c -- fast decoding
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
#include "inftrees.h"
#include "inflate.h"
#include "inffast.h"
#ifndef ASMINF
/* Allow machine dependent optimization for post-increment or pre-increment.
Based on testing to date,
Pre-increment preferred for:
- PowerPC G3 (Adler)
- MIPS R5000 (Randers-Pehrson)
Post-increment preferred for:
- none
No measurable difference:
- Pentium III (Anderson)
- 68060 (Nikl)
*/
#ifdef POSTINC
# define OFF 0
# define PUP(a) *(a)++
#else
# define OFF 1
# define PUP(a) *++(a)
#endif
/*
Decode literal, length, and distance codes and write out the resulting
literal and match bytes until either not enough input or output is
available, an end-of-block is encountered, or a data error is encountered.
When large enough input and output buffers are supplied to inflate(), for
example, a 16K input buffer and a 64K output buffer, more than 95% of the
inflate execution time is spent in this routine.
Entry assumptions:
state->mode == LEN
strm->avail_in >= 6
strm->avail_out >= 258
start >= strm->avail_out
state->bits < 8
On return, state->mode is one of:
LEN -- ran out of enough output space or enough available input
TYPE -- reached end of block code, inflate() to interpret next block
BAD -- error in block data
Notes:
- The maximum input bits used by a length/distance pair is 15 bits for the
length code, 5 bits for the length extra, 15 bits for the distance code,
and 13 bits for the distance extra. This totals 48 bits, or six bytes.
Therefore if strm->avail_in >= 6, then there is enough input to avoid
checking for available input while decoding.
- The maximum bytes that a single length/distance pair can output is 258
bytes, which is the maximum length that can be coded. inflate_fast()
requires strm->avail_out >= 258 for each loop to avoid checking for
output space.
*/
void inflate_fast(strm, start)
z_streamp strm;
unsigned start; /* inflate()'s starting value for strm->avail_out */
{
struct inflate_state FAR *state;
unsigned char FAR *in; /* local strm->next_in */
unsigned char FAR *last; /* while in < last, enough input available */
unsigned char FAR *out; /* local strm->next_out */
unsigned char FAR *beg; /* inflate()'s initial strm->next_out */
unsigned char FAR *end; /* while out < end, enough space available */
unsigned wsize; /* window size or zero if not using window */
unsigned whave; /* valid bytes in the window */
unsigned write; /* window write index */
unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */
unsigned long hold; /* local strm->hold */
unsigned bits; /* local strm->bits */
code const FAR *lcode; /* local strm->lencode */
code const FAR *dcode; /* local strm->distcode */
unsigned lmask; /* mask for first level of length codes */
unsigned dmask; /* mask for first level of distance codes */
code this; /* retrieved table entry */
unsigned op; /* code bits, operation, extra bits, or */
/* window position, window bytes to copy */
unsigned len; /* match length, unused bytes */
unsigned dist; /* match distance */
unsigned char FAR *from; /* where to copy match from */
/* copy state to local variables */
state = (struct inflate_state FAR *)strm->state;
in = strm->next_in - OFF;
last = in + (strm->avail_in - 5);
out = strm->next_out - OFF;
beg = out - (start - strm->avail_out);
end = out + (strm->avail_out - 257);
wsize = state->wsize;
whave = state->whave;
write = state->write;
window = state->window;
hold = state->hold;
bits = state->bits;
lcode = state->lencode;
dcode = state->distcode;
lmask = (1U << state->lenbits) - 1;
dmask = (1U << state->distbits) - 1;
/* decode literals and length/distances until end-of-block or not enough
input data or output space */
do {
if (bits < 15) {
hold += (unsigned long)(PUP(in)) << bits;
bits += 8;
hold += (unsigned long)(PUP(in)) << bits;
bits += 8;
}
this = lcode[hold & lmask];
dolen:
op = (unsigned)(this.bits);
hold >>= op;
bits -= op;
op = (unsigned)(this.op);
if (op == 0) { /* literal */
Tracevv((stderr, this.val >= 0x20 && this.val < 0x7f ?
"inflate: literal '%c'\n" :
"inflate: literal 0x%02x\n", this.val));
PUP(out) = (unsigned char)(this.val);
}
else if (op & 16) { /* length base */
len = (unsigned)(this.val);
op &= 15; /* number of extra bits */
if (op) {
if (bits < op) {
hold += (unsigned long)(PUP(in)) << bits;
bits += 8;
}
len += (unsigned)hold & ((1U << op) - 1);
hold >>= op;
bits -= op;
}
Tracevv((stderr, "inflate: length %u\n", len));
if (bits < 15) {
hold += (unsigned long)(PUP(in)) << bits;
bits += 8;
hold += (unsigned long)(PUP(in)) << bits;
bits += 8;
}
this = dcode[hold & dmask];
dodist:
op = (unsigned)(this.bits);
hold >>= op;
bits -= op;
op = (unsigned)(this.op);
if (op & 16) { /* distance base */
dist = (unsigned)(this.val);
op &= 15; /* number of extra bits */
if (bits < op) {
hold += (unsigned long)(PUP(in)) << bits;
bits += 8;
if (bits < op) {
hold += (unsigned long)(PUP(in)) << bits;
bits += 8;
}
}
dist += (unsigned)hold & ((1U << op) - 1);
hold >>= op;
bits -= op;
Tracevv((stderr, "inflate: distance %u\n", dist));
op = (unsigned)(out - beg); /* max distance in output */
if (dist > op) { /* see if copy from window */
op = dist - op; /* distance back in window */
if (op > whave) {
strm->msg = (char *)"invalid distance too far back";
state->mode = BAD;
break;
}
from = window - OFF;
if (write == 0) { /* very common case */
from += wsize - op;
if (op < len) { /* some from window */
len -= op;
do {
PUP(out) = PUP(from);
} while (--op);
from = out - dist; /* rest from output */
}
}
else if (write < op) { /* wrap around window */
from += wsize + write - op;
op -= write;
if (op < len) { /* some from end of window */
len -= op;
do {
PUP(out) = PUP(from);
} while (--op);
from = window - OFF;
if (write < len) { /* some from start of window */
op = write;
len -= op;
do {
PUP(out) = PUP(from);
} while (--op);
from = out - dist; /* rest from output */
}
}
}
else { /* contiguous in window */
from += write - op;
if (op < len) { /* some from window */
len -= op;
do {
PUP(out) = PUP(from);
} while (--op);
from = out - dist; /* rest from output */
}
}
while (len > 2) {
PUP(out) = PUP(from);
PUP(out) = PUP(from);
PUP(out) = PUP(from);
len -= 3;
}
if (len) {
PUP(out) = PUP(from);
if (len > 1)
PUP(out) = PUP(from);
}
}
else {
from = out - dist; /* copy direct from output */
do { /* minimum length is three */
PUP(out) = PUP(from);
PUP(out) = PUP(from);
PUP(out) = PUP(from);
len -= 3;
} while (len > 2);
if (len) {
PUP(out) = PUP(from);
if (len > 1)
PUP(out) = PUP(from);
}
}
}
else if ((op & 64) == 0) { /* 2nd level distance code */
this = dcode[this.val + (hold & ((1U << op) - 1))];
goto dodist;
}
else {
strm->msg = (char *)"invalid distance code";
state->mode = BAD;
break;
}
}
else if ((op & 64) == 0) { /* 2nd level length code */
this = lcode[this.val + (hold & ((1U << op) - 1))];
goto dolen;
}
else if (op & 32) { /* end-of-block */
Tracevv((stderr, "inflate: end of block\n"));
state->mode = TYPE;
break;
}
else {
strm->msg = (char *)"invalid literal/length code";
state->mode = BAD;
break;
}
} while (in < last && out < end);
/* return unused bytes (on entry, bits < 8, so in won't go too far back) */
len = bits >> 3;
in -= len;
bits -= len << 3;
hold &= (1U << bits) - 1;
/* update state and return */
strm->next_in = in + OFF;
strm->next_out = out + OFF;
strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last));
strm->avail_out = (unsigned)(out < end ?
257 + (end - out) : 257 - (out - end));
state->hold = hold;
state->bits = bits;
return;
}
/*
inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe):
- Using bit fields for code structure
- Different op definition to avoid & for extra bits (do & for table bits)
- Three separate decoding do-loops for direct, window, and write == 0
- Special case for distance > 1 copies to do overlapped load and store copy
- Explicit branch predictions (based on measured branch probabilities)
- Deferring match copy and interspersed it with decoding subsequent codes
- Swapping literal/length else
- Swapping window/direct else
- Larger unrolled copy loops (three is about right)
- Moving len -= 3 statement into middle of loop
*/
#endif /* !ASMINF */

View File

@@ -1,11 +0,0 @@
/* inffast.h -- header to use inffast.c
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
void inflate_fast OF((z_streamp strm, unsigned start));

View File

@@ -1,94 +0,0 @@
/* inffixed.h -- table for decoding fixed codes
* Generated automatically by makefixed().
*/
/* WARNING: this file should *not* be used by applications. It
is part of the implementation of the compression library and
is subject to change. Applications should only use zlib.h.
*/
static const code lenfix[512] = {
{96,7,0},{0,8,80},{0,8,16},{20,8,115},{18,7,31},{0,8,112},{0,8,48},
{0,9,192},{16,7,10},{0,8,96},{0,8,32},{0,9,160},{0,8,0},{0,8,128},
{0,8,64},{0,9,224},{16,7,6},{0,8,88},{0,8,24},{0,9,144},{19,7,59},
{0,8,120},{0,8,56},{0,9,208},{17,7,17},{0,8,104},{0,8,40},{0,9,176},
{0,8,8},{0,8,136},{0,8,72},{0,9,240},{16,7,4},{0,8,84},{0,8,20},
{21,8,227},{19,7,43},{0,8,116},{0,8,52},{0,9,200},{17,7,13},{0,8,100},
{0,8,36},{0,9,168},{0,8,4},{0,8,132},{0,8,68},{0,9,232},{16,7,8},
{0,8,92},{0,8,28},{0,9,152},{20,7,83},{0,8,124},{0,8,60},{0,9,216},
{18,7,23},{0,8,108},{0,8,44},{0,9,184},{0,8,12},{0,8,140},{0,8,76},
{0,9,248},{16,7,3},{0,8,82},{0,8,18},{21,8,163},{19,7,35},{0,8,114},
{0,8,50},{0,9,196},{17,7,11},{0,8,98},{0,8,34},{0,9,164},{0,8,2},
{0,8,130},{0,8,66},{0,9,228},{16,7,7},{0,8,90},{0,8,26},{0,9,148},
{20,7,67},{0,8,122},{0,8,58},{0,9,212},{18,7,19},{0,8,106},{0,8,42},
{0,9,180},{0,8,10},{0,8,138},{0,8,74},{0,9,244},{16,7,5},{0,8,86},
{0,8,22},{64,8,0},{19,7,51},{0,8,118},{0,8,54},{0,9,204},{17,7,15},
{0,8,102},{0,8,38},{0,9,172},{0,8,6},{0,8,134},{0,8,70},{0,9,236},
{16,7,9},{0,8,94},{0,8,30},{0,9,156},{20,7,99},{0,8,126},{0,8,62},
{0,9,220},{18,7,27},{0,8,110},{0,8,46},{0,9,188},{0,8,14},{0,8,142},
{0,8,78},{0,9,252},{96,7,0},{0,8,81},{0,8,17},{21,8,131},{18,7,31},
{0,8,113},{0,8,49},{0,9,194},{16,7,10},{0,8,97},{0,8,33},{0,9,162},
{0,8,1},{0,8,129},{0,8,65},{0,9,226},{16,7,6},{0,8,89},{0,8,25},
{0,9,146},{19,7,59},{0,8,121},{0,8,57},{0,9,210},{17,7,17},{0,8,105},
{0,8,41},{0,9,178},{0,8,9},{0,8,137},{0,8,73},{0,9,242},{16,7,4},
{0,8,85},{0,8,21},{16,8,258},{19,7,43},{0,8,117},{0,8,53},{0,9,202},
{17,7,13},{0,8,101},{0,8,37},{0,9,170},{0,8,5},{0,8,133},{0,8,69},
{0,9,234},{16,7,8},{0,8,93},{0,8,29},{0,9,154},{20,7,83},{0,8,125},
{0,8,61},{0,9,218},{18,7,23},{0,8,109},{0,8,45},{0,9,186},{0,8,13},
{0,8,141},{0,8,77},{0,9,250},{16,7,3},{0,8,83},{0,8,19},{21,8,195},
{19,7,35},{0,8,115},{0,8,51},{0,9,198},{17,7,11},{0,8,99},{0,8,35},
{0,9,166},{0,8,3},{0,8,131},{0,8,67},{0,9,230},{16,7,7},{0,8,91},
{0,8,27},{0,9,150},{20,7,67},{0,8,123},{0,8,59},{0,9,214},{18,7,19},
{0,8,107},{0,8,43},{0,9,182},{0,8,11},{0,8,139},{0,8,75},{0,9,246},
{16,7,5},{0,8,87},{0,8,23},{64,8,0},{19,7,51},{0,8,119},{0,8,55},
{0,9,206},{17,7,15},{0,8,103},{0,8,39},{0,9,174},{0,8,7},{0,8,135},
{0,8,71},{0,9,238},{16,7,9},{0,8,95},{0,8,31},{0,9,158},{20,7,99},
{0,8,127},{0,8,63},{0,9,222},{18,7,27},{0,8,111},{0,8,47},{0,9,190},
{0,8,15},{0,8,143},{0,8,79},{0,9,254},{96,7,0},{0,8,80},{0,8,16},
{20,8,115},{18,7,31},{0,8,112},{0,8,48},{0,9,193},{16,7,10},{0,8,96},
{0,8,32},{0,9,161},{0,8,0},{0,8,128},{0,8,64},{0,9,225},{16,7,6},
{0,8,88},{0,8,24},{0,9,145},{19,7,59},{0,8,120},{0,8,56},{0,9,209},
{17,7,17},{0,8,104},{0,8,40},{0,9,177},{0,8,8},{0,8,136},{0,8,72},
{0,9,241},{16,7,4},{0,8,84},{0,8,20},{21,8,227},{19,7,43},{0,8,116},
{0,8,52},{0,9,201},{17,7,13},{0,8,100},{0,8,36},{0,9,169},{0,8,4},
{0,8,132},{0,8,68},{0,9,233},{16,7,8},{0,8,92},{0,8,28},{0,9,153},
{20,7,83},{0,8,124},{0,8,60},{0,9,217},{18,7,23},{0,8,108},{0,8,44},
{0,9,185},{0,8,12},{0,8,140},{0,8,76},{0,9,249},{16,7,3},{0,8,82},
{0,8,18},{21,8,163},{19,7,35},{0,8,114},{0,8,50},{0,9,197},{17,7,11},
{0,8,98},{0,8,34},{0,9,165},{0,8,2},{0,8,130},{0,8,66},{0,9,229},
{16,7,7},{0,8,90},{0,8,26},{0,9,149},{20,7,67},{0,8,122},{0,8,58},
{0,9,213},{18,7,19},{0,8,106},{0,8,42},{0,9,181},{0,8,10},{0,8,138},
{0,8,74},{0,9,245},{16,7,5},{0,8,86},{0,8,22},{64,8,0},{19,7,51},
{0,8,118},{0,8,54},{0,9,205},{17,7,15},{0,8,102},{0,8,38},{0,9,173},
{0,8,6},{0,8,134},{0,8,70},{0,9,237},{16,7,9},{0,8,94},{0,8,30},
{0,9,157},{20,7,99},{0,8,126},{0,8,62},{0,9,221},{18,7,27},{0,8,110},
{0,8,46},{0,9,189},{0,8,14},{0,8,142},{0,8,78},{0,9,253},{96,7,0},
{0,8,81},{0,8,17},{21,8,131},{18,7,31},{0,8,113},{0,8,49},{0,9,195},
{16,7,10},{0,8,97},{0,8,33},{0,9,163},{0,8,1},{0,8,129},{0,8,65},
{0,9,227},{16,7,6},{0,8,89},{0,8,25},{0,9,147},{19,7,59},{0,8,121},
{0,8,57},{0,9,211},{17,7,17},{0,8,105},{0,8,41},{0,9,179},{0,8,9},
{0,8,137},{0,8,73},{0,9,243},{16,7,4},{0,8,85},{0,8,21},{16,8,258},
{19,7,43},{0,8,117},{0,8,53},{0,9,203},{17,7,13},{0,8,101},{0,8,37},
{0,9,171},{0,8,5},{0,8,133},{0,8,69},{0,9,235},{16,7,8},{0,8,93},
{0,8,29},{0,9,155},{20,7,83},{0,8,125},{0,8,61},{0,9,219},{18,7,23},
{0,8,109},{0,8,45},{0,9,187},{0,8,13},{0,8,141},{0,8,77},{0,9,251},
{16,7,3},{0,8,83},{0,8,19},{21,8,195},{19,7,35},{0,8,115},{0,8,51},
{0,9,199},{17,7,11},{0,8,99},{0,8,35},{0,9,167},{0,8,3},{0,8,131},
{0,8,67},{0,9,231},{16,7,7},{0,8,91},{0,8,27},{0,9,151},{20,7,67},
{0,8,123},{0,8,59},{0,9,215},{18,7,19},{0,8,107},{0,8,43},{0,9,183},
{0,8,11},{0,8,139},{0,8,75},{0,9,247},{16,7,5},{0,8,87},{0,8,23},
{64,8,0},{19,7,51},{0,8,119},{0,8,55},{0,9,207},{17,7,15},{0,8,103},
{0,8,39},{0,9,175},{0,8,7},{0,8,135},{0,8,71},{0,9,239},{16,7,9},
{0,8,95},{0,8,31},{0,9,159},{20,7,99},{0,8,127},{0,8,63},{0,9,223},
{18,7,27},{0,8,111},{0,8,47},{0,9,191},{0,8,15},{0,8,143},{0,8,79},
{0,9,255}
};
static const code distfix[32] = {
{16,5,1},{23,5,257},{19,5,17},{27,5,4097},{17,5,5},{25,5,1025},
{21,5,65},{29,5,16385},{16,5,3},{24,5,513},{20,5,33},{28,5,8193},
{18,5,9},{26,5,2049},{22,5,129},{64,5,0},{16,5,2},{23,5,385},
{19,5,25},{27,5,6145},{17,5,7},{25,5,1537},{21,5,97},{29,5,24577},
{16,5,4},{24,5,769},{20,5,49},{28,5,12289},{18,5,13},{26,5,3073},
{22,5,193},{64,5,0}
};

File diff suppressed because it is too large Load Diff

View File

@@ -1,117 +0,0 @@
/* inflate.h -- internal inflate state definition
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
/* define NO_GZIP when compiling if you want to disable gzip header and
trailer decoding by inflate(). NO_GZIP would be used to avoid linking in
the crc code when it is not needed. For shared libraries, gzip decoding
should be left enabled. */
#ifndef NO_GZIP
# define GUNZIP
#endif
/* Possible inflate modes between inflate() calls */
typedef enum {
HEAD, /* i: waiting for magic header */
#ifdef GUNZIP
FLAGS, /* i: waiting for method and flags (gzip) */
TIME, /* i: waiting for modification time (gzip) */
OS, /* i: waiting for extra flags and operating system (gzip) */
EXLEN, /* i: waiting for extra length (gzip) */
EXTRA, /* i: waiting for extra bytes (gzip) */
NAME, /* i: waiting for end of file name (gzip) */
COMMENT, /* i: waiting for end of comment (gzip) */
HCRC, /* i: waiting for header crc (gzip) */
#endif
DICTID, /* i: waiting for dictionary check value */
DICT, /* waiting for inflateSetDictionary() call */
TYPE, /* i: waiting for type bits, including last-flag bit */
TYPEDO, /* i: same, but skip check to exit inflate on new block */
STORED, /* i: waiting for stored size (length and complement) */
COPY, /* i/o: waiting for input or output to copy stored block */
TABLE, /* i: waiting for dynamic block table lengths */
LENLENS, /* i: waiting for code length code lengths */
CODELENS, /* i: waiting for length/lit and distance code lengths */
LEN, /* i: waiting for length/lit code */
LENEXT, /* i: waiting for length extra bits */
DIST, /* i: waiting for distance code */
DISTEXT, /* i: waiting for distance extra bits */
MATCH, /* o: waiting for output space to copy string */
LIT, /* o: waiting for output space to write literal */
CHECK, /* i: waiting for 32-bit check value */
#ifdef GUNZIP
LENGTH, /* i: waiting for 32-bit length (gzip) */
#endif
DONE, /* finished check, done -- remain here until reset */
BAD, /* got a data error -- remain here until reset */
MEM, /* got an inflate() memory error -- remain here until reset */
SYNC /* looking for synchronization bytes to restart inflate() */
} inflate_mode;
/*
State transitions between above modes -
(most modes can go to the BAD or MEM mode -- not shown for clarity)
Process header:
HEAD -> (gzip) or (zlib)
(gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME
NAME -> COMMENT -> HCRC -> TYPE
(zlib) -> DICTID or TYPE
DICTID -> DICT -> TYPE
Read deflate blocks:
TYPE -> STORED or TABLE or LEN or CHECK
STORED -> COPY -> TYPE
TABLE -> LENLENS -> CODELENS -> LEN
Read deflate codes:
LEN -> LENEXT or LIT or TYPE
LENEXT -> DIST -> DISTEXT -> MATCH -> LEN
LIT -> LEN
Process trailer:
CHECK -> LENGTH -> DONE
*/
/* state maintained between inflate() calls. Approximately 7K bytes. */
struct inflate_state {
inflate_mode mode; /* current inflate mode */
int last; /* true if processing last block */
int wrap; /* bit 0 true for zlib, bit 1 true for gzip */
int havedict; /* true if dictionary provided */
int flags; /* gzip header method and flags (0 if zlib) */
unsigned long check; /* protected copy of check value */
unsigned long total; /* protected copy of output count */
/* sliding window */
unsigned wbits; /* log base 2 of requested window size */
unsigned wsize; /* window size or zero if not using window */
unsigned whave; /* valid bytes in the window */
unsigned write; /* window write index */
unsigned char FAR *window; /* allocated sliding window, if needed */
/* bit accumulator */
unsigned long hold; /* input bit accumulator */
unsigned bits; /* number of bits in "in" */
/* for string and stored block copying */
unsigned length; /* literal or length of data to copy */
unsigned offset; /* distance back to copy string from */
/* for table and code decoding */
unsigned extra; /* extra bits needed */
/* fixed and dynamic code tables */
code const FAR *lencode; /* starting table for length/literal codes */
code const FAR *distcode; /* starting table for distance codes */
unsigned lenbits; /* index bits for lencode */
unsigned distbits; /* index bits for distcode */
/* dynamic table building */
unsigned ncode; /* number of code length code lengths */
unsigned nlen; /* number of length code lengths */
unsigned ndist; /* number of distance code lengths */
unsigned have; /* number of code lengths in lens[] */
code FAR *next; /* next available space in codes[] */
unsigned short lens[320]; /* temporary storage for code lengths */
unsigned short work[288]; /* work area for code table building */
code codes[ENOUGH]; /* space for code tables */
};

View File

@@ -1,321 +0,0 @@
/* inftrees.c -- generate Huffman trees for efficient decoding
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
#include "inftrees.h"
#define MAXBITS 15
const char inflate_copyright[] =
" inflate 1.2.1 Copyright 1995-2003 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
include such an acknowledgment, I would appreciate that you keep this
copyright string in the executable of your product.
*/
/*
Build a set of tables to decode the provided canonical Huffman code.
The code lengths are lens[0..codes-1]. The result starts at *table,
whose indices are 0..2^bits-1. work is a writable array of at least
lens shorts, which is used as a work area. type is the type of code
to be generated, CODES, LENS, or DISTS. On return, zero is success,
-1 is an invalid code, and +1 means that ENOUGH isn't enough. table
on return points to the next available entry's address. bits is the
requested root table index bits, and on return it is the actual root
table index bits. It will differ if the request is greater than the
longest code or if it is less than the shortest code.
*/
int inflate_table(type, lens, codes, table, bits, work)
codetype type;
unsigned short FAR *lens;
unsigned codes;
code FAR * FAR *table;
unsigned FAR *bits;
unsigned short FAR *work;
{
unsigned len; /* a code's length in bits */
unsigned sym; /* index of code symbols */
unsigned min, max; /* minimum and maximum code lengths */
unsigned root; /* number of index bits for root table */
unsigned curr; /* number of index bits for current table */
unsigned drop; /* code bits to drop for sub-table */
int left; /* number of prefix codes available */
unsigned used; /* code entries in table used */
unsigned huff; /* Huffman code */
unsigned incr; /* for incrementing code, index */
unsigned fill; /* index for replicating entries */
unsigned low; /* low bits for current root entry */
unsigned mask; /* mask for low root bits */
code this; /* table entry for duplication */
code FAR *next; /* next available space in table */
const unsigned short FAR *base; /* base value table to use */
const unsigned short FAR *extra; /* extra bits table to use */
int end; /* use base and extra for symbol > end */
unsigned short count[MAXBITS+1]; /* number of codes of each length */
unsigned short offs[MAXBITS+1]; /* offsets in table for each length */
static const unsigned short lbase[31] = { /* Length codes 257..285 base */
3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
static const unsigned short lext[31] = { /* Length codes 257..285 extra */
16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 76, 66};
static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
8193, 12289, 16385, 24577, 0, 0};
static const unsigned short dext[32] = { /* Distance codes 0..29 extra */
16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22,
23, 23, 24, 24, 25, 25, 26, 26, 27, 27,
28, 28, 29, 29, 64, 64};
/*
Process a set of code lengths to create a canonical Huffman code. The
code lengths are lens[0..codes-1]. Each length corresponds to the
symbols 0..codes-1. The Huffman code is generated by first sorting the
symbols by length from short to long, and retaining the symbol order
for codes with equal lengths. Then the code starts with all zero bits
for the first code of the shortest length, and the codes are integer
increments for the same length, and zeros are appended as the length
increases. For the deflate format, these bits are stored backwards
from their more natural integer increment ordering, and so when the
decoding tables are built in the large loop below, the integer codes
are incremented backwards.
This routine assumes, but does not check, that all of the entries in
lens[] are in the range 0..MAXBITS. The caller must assure this.
1..MAXBITS is interpreted as that code length. zero means that that
symbol does not occur in this code.
The codes are sorted by computing a count of codes for each length,
creating from that a table of starting indices for each length in the
sorted table, and then entering the symbols in order in the sorted
table. The sorted table is work[], with that space being provided by
the caller.
The length counts are used for other purposes as well, i.e. finding
the minimum and maximum length codes, determining if there are any
codes at all, checking for a valid set of lengths, and looking ahead
at length counts to determine sub-table sizes when building the
decoding tables.
*/
/* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */
for (len = 0; len <= MAXBITS; len++)
count[len] = 0;
for (sym = 0; sym < codes; sym++)
count[lens[sym]]++;
/* bound code lengths, force root to be within code lengths */
root = *bits;
for (max = MAXBITS; max >= 1; max--)
if (count[max] != 0) break;
if (root > max) root = max;
if (max == 0) return -1; /* no codes! */
for (min = 1; min <= MAXBITS; min++)
if (count[min] != 0) break;
if (root < min) root = min;
/* check for an over-subscribed or incomplete set of lengths */
left = 1;
for (len = 1; len <= MAXBITS; len++) {
left <<= 1;
left -= count[len];
if (left < 0) return -1; /* over-subscribed */
}
if (left > 0 && (type == CODES || (codes - count[0] != 1)))
return -1; /* incomplete set */
/* generate offsets into symbol table for each length for sorting */
offs[1] = 0;
for (len = 1; len < MAXBITS; len++)
offs[len + 1] = offs[len] + count[len];
/* sort symbols by length, by symbol order within each length */
for (sym = 0; sym < codes; sym++)
if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym;
/*
Create and fill in decoding tables. In this loop, the table being
filled is at next and has curr index bits. The code being used is huff
with length len. That code is converted to an index by dropping drop
bits off of the bottom. For codes where len is less than drop + curr,
those top drop + curr - len bits are incremented through all values to
fill the table with replicated entries.
root is the number of index bits for the root table. When len exceeds
root, sub-tables are created pointed to by the root entry with an index
of the low root bits of huff. This is saved in low to check for when a
new sub-table should be started. drop is zero when the root table is
being filled, and drop is root when sub-tables are being filled.
When a new sub-table is needed, it is necessary to look ahead in the
code lengths to determine what size sub-table is needed. The length
counts are used for this, and so count[] is decremented as codes are
entered in the tables.
used keeps track of how many table entries have been allocated from the
provided *table space. It is checked when a LENS table is being made
against the space in *table, ENOUGH, minus the maximum space needed by
the worst case distance code, MAXD. This should never happen, but the
sufficiency of ENOUGH has not been proven exhaustively, hence the check.
This assumes that when type == LENS, bits == 9.
sym increments through all symbols, and the loop terminates when
all codes of length max, i.e. all codes, have been processed. This
routine permits incomplete codes, so another loop after this one fills
in the rest of the decoding tables with invalid code markers.
*/
/* set up for code type */
switch (type) {
case CODES:
base = extra = work; /* dummy value--not used */
end = 19;
break;
case LENS:
base = lbase;
base -= 257;
extra = lext;
extra -= 257;
end = 256;
break;
default: /* DISTS */
base = dbase;
extra = dext;
end = -1;
}
/* initialize state for loop */
huff = 0; /* starting code */
sym = 0; /* starting code symbol */
len = min; /* starting code length */
next = *table; /* current table to fill in */
curr = root; /* current table index bits */
drop = 0; /* current bits to drop from code for index */
low = (unsigned)(-1); /* trigger new sub-table when len > root */
used = 1U << root; /* use root table entries */
mask = used - 1; /* mask for comparing low */
/* check available table space */
if (type == LENS && used >= ENOUGH - MAXD)
return 1;
/* process all codes and make table entries */
for (;;) {
/* create table entry */
this.bits = (unsigned char)(len - drop);
if ((int)(work[sym]) < end) {
this.op = (unsigned char)0;
this.val = work[sym];
}
else if ((int)(work[sym]) > end) {
this.op = (unsigned char)(extra[work[sym]]);
this.val = base[work[sym]];
}
else {
this.op = (unsigned char)(32 + 64); /* end of block */
this.val = 0;
}
/* replicate for those indices with low len bits equal to huff */
incr = 1U << (len - drop);
fill = 1U << curr;
do {
fill -= incr;
next[(huff >> drop) + fill] = this;
} while (fill != 0);
/* backwards increment the len-bit code huff */
incr = 1U << (len - 1);
while (huff & incr)
incr >>= 1;
if (incr != 0) {
huff &= incr - 1;
huff += incr;
}
else
huff = 0;
/* go to next symbol, update count, len */
sym++;
if (--(count[len]) == 0) {
if (len == max) break;
len = lens[work[sym]];
}
/* create new sub-table if needed */
if (len > root && (huff & mask) != low) {
/* if first time, transition to sub-tables */
if (drop == 0)
drop = root;
/* increment past last table */
next += 1U << curr;
/* determine length of next table */
curr = len - drop;
left = (int)(1 << curr);
while (curr + drop < max) {
left -= count[curr + drop];
if (left <= 0) break;
curr++;
left <<= 1;
}
/* check for enough space */
used += 1U << curr;
if (type == LENS && used >= ENOUGH - MAXD)
return 1;
/* point entry in root table to sub-table */
low = huff & mask;
(*table)[low].op = (unsigned char)curr;
(*table)[low].bits = (unsigned char)root;
(*table)[low].val = (unsigned short)(next - *table);
}
}
/*
Fill in rest of table for incomplete codes. This loop is similar to the
loop above in incrementing huff for table indices. It is assumed that
len is equal to curr + drop, so there is no loop needed to increment
through high index bits. When the current sub-table is filled, the loop
drops back to the root table to fill in any remaining entries there.
*/
this.op = (unsigned char)64; /* invalid code marker */
this.bits = (unsigned char)(len - drop);
this.val = (unsigned short)0;
while (huff != 0) {
/* when done with sub-table, drop back to root table */
if (drop != 0 && (huff & mask) != low) {
drop = 0;
len = root;
next = *table;
curr = root;
this.bits = (unsigned char)len;
}
/* put invalid code marker in table */
next[huff >> drop] = this;
/* backwards increment the len-bit code huff */
incr = 1U << (len - 1);
while (huff & incr)
incr >>= 1;
if (incr != 0) {
huff &= incr - 1;
huff += incr;
}
else
huff = 0;
}
/* set return parameters */
*table += used;
*bits = root;
return 0;
}

View File

@@ -1,55 +0,0 @@
/* inftrees.h -- header to use inftrees.c
* Copyright (C) 1995-2003 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
/* Structure for decoding tables. Each entry provides either the
information needed to do the operation requested by the code that
indexed that table entry, or it provides a pointer to another
table that indexes more bits of the code. op indicates whether
the entry is a pointer to another table, a literal, a length or
distance, an end-of-block, or an invalid code. For a table
pointer, the low four bits of op is the number of index bits of
that table. For a length or distance, the low four bits of op
is the number of extra bits to get after the code. bits is
the number of bits in this code or part of the code to drop off
of the bit buffer. val is the actual byte to output in the case
of a literal, the base length or distance, or the offset from
the current table to the next table. Each entry is four bytes. */
typedef struct {
unsigned char op; /* operation, extra bits, table bits */
unsigned char bits; /* bits in this part of the code */
unsigned short val; /* offset in table or code value */
} code;
/* op values as set by inflate_table():
00000000 - literal
0000tttt - table link, tttt != 0 is the number of table index bits
0001eeee - length or distance, eeee is the number of extra bits
01100000 - end of block
01000000 - invalid code
*/
/* Maximum size of dynamic tree. The maximum found in a long but non-
exhaustive search was 1004 code structures (850 for length/literals
and 154 for distances, the latter actually the result of an
exhaustive search). The true maximum is not known, but the value
below is more than safe. */
#define ENOUGH 1440
#define MAXD 154
/* Type of code to build for inftable() */
typedef enum {
CODES,
LENS,
DISTS
} codetype;
extern int inflate_table OF((codetype type, unsigned short FAR *lens,
unsigned codes, code FAR * FAR *table,
unsigned FAR *bits, unsigned short FAR *work));

View File

@@ -1,322 +0,0 @@
/* minigzip.c -- simulate gzip using the zlib compression library
* Copyright (C) 1995-2002 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/*
* minigzip is a minimal implementation of the gzip utility. This is
* only an example of using zlib and isn't meant to replace the
* full-featured gzip. No attempt is made to deal with file systems
* limiting names to 14 or 8+3 characters, etc... Error checking is
* very limited. So use minigzip only for testing; use gzip for the
* real thing. On MSDOS, use only on file names without extension
* or in pipe mode.
*/
/* @(#) $Id$ */
#include <stdio.h>
#include "zlib.h"
#ifdef STDC
# include <string.h>
# include <stdlib.h>
#else
extern void exit OF((int));
#endif
#ifdef USE_MMAP
# include <sys/types.h>
# include <sys/mman.h>
# include <sys/stat.h>
#endif
#if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__)
# include <fcntl.h>
# include <io.h>
# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
#else
# define SET_BINARY_MODE(file)
#endif
#ifdef VMS
# define unlink delete
# define GZ_SUFFIX "-gz"
#endif
#ifdef RISCOS
# define unlink remove
# define GZ_SUFFIX "-gz"
# define fileno(file) file->__file
#endif
#if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
# include <unix.h> /* for fileno */
#endif
#ifndef WIN32 /* unlink already in stdio.h for WIN32 */
extern int unlink OF((const char *));
#endif
#ifndef GZ_SUFFIX
# define GZ_SUFFIX ".gz"
#endif
#define SUFFIX_LEN (sizeof(GZ_SUFFIX)-1)
#define BUFLEN 16384
#define MAX_NAME_LEN 1024
#ifdef MAXSEG_64K
# define local static
/* Needed for systems with limitation on stack size. */
#else
# define local
#endif
char *prog;
void error OF((const char *msg));
void gz_compress OF((FILE *in, gzFile out));
#ifdef USE_MMAP
int gz_compress_mmap OF((FILE *in, gzFile out));
#endif
void gz_uncompress OF((gzFile in, FILE *out));
void file_compress OF((char *file, char *mode));
void file_uncompress OF((char *file));
int main OF((int argc, char *argv[]));
/* ===========================================================================
* Display error message and exit
*/
void error(msg)
const char *msg;
{
fprintf(stderr, "%s: %s\n", prog, msg);
exit(1);
}
/* ===========================================================================
* Compress input to output then close both files.
*/
void gz_compress(in, out)
FILE *in;
gzFile out;
{
local char buf[BUFLEN];
int len;
int err;
#ifdef USE_MMAP
/* Try first compressing with mmap. If mmap fails (minigzip used in a
* pipe), use the normal fread loop.
*/
if (gz_compress_mmap(in, out) == Z_OK) return;
#endif
for (;;) {
len = (int)fread(buf, 1, sizeof(buf), in);
if (ferror(in)) {
perror("fread");
exit(1);
}
if (len == 0) break;
if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err));
}
fclose(in);
if (gzclose(out) != Z_OK) error("failed gzclose");
}
#ifdef USE_MMAP /* MMAP version, Miguel Albrecht <malbrech@eso.org> */
/* Try compressing the input file at once using mmap. Return Z_OK if
* if success, Z_ERRNO otherwise.
*/
int gz_compress_mmap(in, out)
FILE *in;
gzFile out;
{
int len;
int err;
int ifd = fileno(in);
caddr_t buf; /* mmap'ed buffer for the entire input file */
off_t buf_len; /* length of the input file */
struct stat sb;
/* Determine the size of the file, needed for mmap: */
if (fstat(ifd, &sb) < 0) return Z_ERRNO;
buf_len = sb.st_size;
if (buf_len <= 0) return Z_ERRNO;
/* Now do the actual mmap: */
buf = mmap((caddr_t) 0, buf_len, PROT_READ, MAP_SHARED, ifd, (off_t)0);
if (buf == (caddr_t)(-1)) return Z_ERRNO;
/* Compress the whole file at once: */
len = gzwrite(out, (char *)buf, (unsigned)buf_len);
if (len != (int)buf_len) error(gzerror(out, &err));
munmap(buf, buf_len);
fclose(in);
if (gzclose(out) != Z_OK) error("failed gzclose");
return Z_OK;
}
#endif /* USE_MMAP */
/* ===========================================================================
* Uncompress input to output then close both files.
*/
void gz_uncompress(in, out)
gzFile in;
FILE *out;
{
local char buf[BUFLEN];
int len;
int err;
for (;;) {
len = gzread(in, buf, sizeof(buf));
if (len < 0) error (gzerror(in, &err));
if (len == 0) break;
if ((int)fwrite(buf, 1, (unsigned)len, out) != len) {
error("failed fwrite");
}
}
if (fclose(out)) error("failed fclose");
if (gzclose(in) != Z_OK) error("failed gzclose");
}
/* ===========================================================================
* Compress the given file: create a corresponding .gz file and remove the
* original.
*/
void file_compress(file, mode)
char *file;
char *mode;
{
local char outfile[MAX_NAME_LEN];
FILE *in;
gzFile out;
strcpy(outfile, file);
strcat(outfile, GZ_SUFFIX);
in = fopen(file, "rb");
if (in == NULL) {
perror(file);
exit(1);
}
out = gzopen(outfile, mode);
if (out == NULL) {
fprintf(stderr, "%s: can't gzopen %s\n", prog, outfile);
exit(1);
}
gz_compress(in, out);
unlink(file);
}
/* ===========================================================================
* Uncompress the given file and remove the original.
*/
void file_uncompress(file)
char *file;
{
local char buf[MAX_NAME_LEN];
char *infile, *outfile;
FILE *out;
gzFile in;
uInt len = (uInt)strlen(file);
strcpy(buf, file);
if (len > SUFFIX_LEN && strcmp(file+len-SUFFIX_LEN, GZ_SUFFIX) == 0) {
infile = file;
outfile = buf;
outfile[len-3] = '\0';
} else {
outfile = file;
infile = buf;
strcat(infile, GZ_SUFFIX);
}
in = gzopen(infile, "rb");
if (in == NULL) {
fprintf(stderr, "%s: can't gzopen %s\n", prog, infile);
exit(1);
}
out = fopen(outfile, "wb");
if (out == NULL) {
perror(file);
exit(1);
}
gz_uncompress(in, out);
unlink(infile);
}
/* ===========================================================================
* Usage: minigzip [-d] [-f] [-h] [-r] [-1 to -9] [files...]
* -d : decompress
* -f : compress with Z_FILTERED
* -h : compress with Z_HUFFMAN_ONLY
* -r : compress with Z_RLE
* -1 to -9 : compression level
*/
int main(argc, argv)
int argc;
char *argv[];
{
int uncompr = 0;
gzFile file;
char outmode[20];
strcpy(outmode, "wb6 ");
prog = argv[0];
argc--, argv++;
while (argc > 0) {
if (strcmp(*argv, "-d") == 0)
uncompr = 1;
else if (strcmp(*argv, "-f") == 0)
outmode[3] = 'f';
else if (strcmp(*argv, "-h") == 0)
outmode[3] = 'h';
else if (strcmp(*argv, "-r") == 0)
outmode[3] = 'R';
else if ((*argv)[0] == '-' && (*argv)[1] >= '1' && (*argv)[1] <= '9' &&
(*argv)[2] == 0)
outmode[2] = (*argv)[1];
else
break;
argc--, argv++;
}
if (argc == 0) {
SET_BINARY_MODE(stdin);
SET_BINARY_MODE(stdout);
if (uncompr) {
file = gzdopen(fileno(stdin), "rb");
if (file == NULL) error("can't gzdopen stdin");
gz_uncompress(file, stdout);
} else {
file = gzdopen(fileno(stdout), outmode);
if (file == NULL) error("can't gzdopen stdout");
gz_compress(stdin, file);
}
} else {
do {
if (uncompr) {
file_uncompress(*argv);
} else {
file_compress(*argv, outmode);
}
} while (argv++, --argc);
}
return 0;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,128 +0,0 @@
/* header created automatically with -DGEN_TREES_H */
local const ct_data static_ltree[L_CODES+2] = {
{{ 12},{ 8}}, {{140},{ 8}}, {{ 76},{ 8}}, {{204},{ 8}}, {{ 44},{ 8}},
{{172},{ 8}}, {{108},{ 8}}, {{236},{ 8}}, {{ 28},{ 8}}, {{156},{ 8}},
{{ 92},{ 8}}, {{220},{ 8}}, {{ 60},{ 8}}, {{188},{ 8}}, {{124},{ 8}},
{{252},{ 8}}, {{ 2},{ 8}}, {{130},{ 8}}, {{ 66},{ 8}}, {{194},{ 8}},
{{ 34},{ 8}}, {{162},{ 8}}, {{ 98},{ 8}}, {{226},{ 8}}, {{ 18},{ 8}},
{{146},{ 8}}, {{ 82},{ 8}}, {{210},{ 8}}, {{ 50},{ 8}}, {{178},{ 8}},
{{114},{ 8}}, {{242},{ 8}}, {{ 10},{ 8}}, {{138},{ 8}}, {{ 74},{ 8}},
{{202},{ 8}}, {{ 42},{ 8}}, {{170},{ 8}}, {{106},{ 8}}, {{234},{ 8}},
{{ 26},{ 8}}, {{154},{ 8}}, {{ 90},{ 8}}, {{218},{ 8}}, {{ 58},{ 8}},
{{186},{ 8}}, {{122},{ 8}}, {{250},{ 8}}, {{ 6},{ 8}}, {{134},{ 8}},
{{ 70},{ 8}}, {{198},{ 8}}, {{ 38},{ 8}}, {{166},{ 8}}, {{102},{ 8}},
{{230},{ 8}}, {{ 22},{ 8}}, {{150},{ 8}}, {{ 86},{ 8}}, {{214},{ 8}},
{{ 54},{ 8}}, {{182},{ 8}}, {{118},{ 8}}, {{246},{ 8}}, {{ 14},{ 8}},
{{142},{ 8}}, {{ 78},{ 8}}, {{206},{ 8}}, {{ 46},{ 8}}, {{174},{ 8}},
{{110},{ 8}}, {{238},{ 8}}, {{ 30},{ 8}}, {{158},{ 8}}, {{ 94},{ 8}},
{{222},{ 8}}, {{ 62},{ 8}}, {{190},{ 8}}, {{126},{ 8}}, {{254},{ 8}},
{{ 1},{ 8}}, {{129},{ 8}}, {{ 65},{ 8}}, {{193},{ 8}}, {{ 33},{ 8}},
{{161},{ 8}}, {{ 97},{ 8}}, {{225},{ 8}}, {{ 17},{ 8}}, {{145},{ 8}},
{{ 81},{ 8}}, {{209},{ 8}}, {{ 49},{ 8}}, {{177},{ 8}}, {{113},{ 8}},
{{241},{ 8}}, {{ 9},{ 8}}, {{137},{ 8}}, {{ 73},{ 8}}, {{201},{ 8}},
{{ 41},{ 8}}, {{169},{ 8}}, {{105},{ 8}}, {{233},{ 8}}, {{ 25},{ 8}},
{{153},{ 8}}, {{ 89},{ 8}}, {{217},{ 8}}, {{ 57},{ 8}}, {{185},{ 8}},
{{121},{ 8}}, {{249},{ 8}}, {{ 5},{ 8}}, {{133},{ 8}}, {{ 69},{ 8}},
{{197},{ 8}}, {{ 37},{ 8}}, {{165},{ 8}}, {{101},{ 8}}, {{229},{ 8}},
{{ 21},{ 8}}, {{149},{ 8}}, {{ 85},{ 8}}, {{213},{ 8}}, {{ 53},{ 8}},
{{181},{ 8}}, {{117},{ 8}}, {{245},{ 8}}, {{ 13},{ 8}}, {{141},{ 8}},
{{ 77},{ 8}}, {{205},{ 8}}, {{ 45},{ 8}}, {{173},{ 8}}, {{109},{ 8}},
{{237},{ 8}}, {{ 29},{ 8}}, {{157},{ 8}}, {{ 93},{ 8}}, {{221},{ 8}},
{{ 61},{ 8}}, {{189},{ 8}}, {{125},{ 8}}, {{253},{ 8}}, {{ 19},{ 9}},
{{275},{ 9}}, {{147},{ 9}}, {{403},{ 9}}, {{ 83},{ 9}}, {{339},{ 9}},
{{211},{ 9}}, {{467},{ 9}}, {{ 51},{ 9}}, {{307},{ 9}}, {{179},{ 9}},
{{435},{ 9}}, {{115},{ 9}}, {{371},{ 9}}, {{243},{ 9}}, {{499},{ 9}},
{{ 11},{ 9}}, {{267},{ 9}}, {{139},{ 9}}, {{395},{ 9}}, {{ 75},{ 9}},
{{331},{ 9}}, {{203},{ 9}}, {{459},{ 9}}, {{ 43},{ 9}}, {{299},{ 9}},
{{171},{ 9}}, {{427},{ 9}}, {{107},{ 9}}, {{363},{ 9}}, {{235},{ 9}},
{{491},{ 9}}, {{ 27},{ 9}}, {{283},{ 9}}, {{155},{ 9}}, {{411},{ 9}},
{{ 91},{ 9}}, {{347},{ 9}}, {{219},{ 9}}, {{475},{ 9}}, {{ 59},{ 9}},
{{315},{ 9}}, {{187},{ 9}}, {{443},{ 9}}, {{123},{ 9}}, {{379},{ 9}},
{{251},{ 9}}, {{507},{ 9}}, {{ 7},{ 9}}, {{263},{ 9}}, {{135},{ 9}},
{{391},{ 9}}, {{ 71},{ 9}}, {{327},{ 9}}, {{199},{ 9}}, {{455},{ 9}},
{{ 39},{ 9}}, {{295},{ 9}}, {{167},{ 9}}, {{423},{ 9}}, {{103},{ 9}},
{{359},{ 9}}, {{231},{ 9}}, {{487},{ 9}}, {{ 23},{ 9}}, {{279},{ 9}},
{{151},{ 9}}, {{407},{ 9}}, {{ 87},{ 9}}, {{343},{ 9}}, {{215},{ 9}},
{{471},{ 9}}, {{ 55},{ 9}}, {{311},{ 9}}, {{183},{ 9}}, {{439},{ 9}},
{{119},{ 9}}, {{375},{ 9}}, {{247},{ 9}}, {{503},{ 9}}, {{ 15},{ 9}},
{{271},{ 9}}, {{143},{ 9}}, {{399},{ 9}}, {{ 79},{ 9}}, {{335},{ 9}},
{{207},{ 9}}, {{463},{ 9}}, {{ 47},{ 9}}, {{303},{ 9}}, {{175},{ 9}},
{{431},{ 9}}, {{111},{ 9}}, {{367},{ 9}}, {{239},{ 9}}, {{495},{ 9}},
{{ 31},{ 9}}, {{287},{ 9}}, {{159},{ 9}}, {{415},{ 9}}, {{ 95},{ 9}},
{{351},{ 9}}, {{223},{ 9}}, {{479},{ 9}}, {{ 63},{ 9}}, {{319},{ 9}},
{{191},{ 9}}, {{447},{ 9}}, {{127},{ 9}}, {{383},{ 9}}, {{255},{ 9}},
{{511},{ 9}}, {{ 0},{ 7}}, {{ 64},{ 7}}, {{ 32},{ 7}}, {{ 96},{ 7}},
{{ 16},{ 7}}, {{ 80},{ 7}}, {{ 48},{ 7}}, {{112},{ 7}}, {{ 8},{ 7}},
{{ 72},{ 7}}, {{ 40},{ 7}}, {{104},{ 7}}, {{ 24},{ 7}}, {{ 88},{ 7}},
{{ 56},{ 7}}, {{120},{ 7}}, {{ 4},{ 7}}, {{ 68},{ 7}}, {{ 36},{ 7}},
{{100},{ 7}}, {{ 20},{ 7}}, {{ 84},{ 7}}, {{ 52},{ 7}}, {{116},{ 7}},
{{ 3},{ 8}}, {{131},{ 8}}, {{ 67},{ 8}}, {{195},{ 8}}, {{ 35},{ 8}},
{{163},{ 8}}, {{ 99},{ 8}}, {{227},{ 8}}
};
local const ct_data static_dtree[D_CODES] = {
{{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}},
{{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}},
{{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}},
{{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}},
{{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}},
{{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}}
};
const uch _dist_code[DIST_CODE_LEN] = {
0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8,
8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17,
18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22,
23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
};
const uch _length_code[MAX_MATCH-MIN_MATCH+1]= {
0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12,
13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19,
19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28
};
local const int base_length[LENGTH_CODES] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56,
64, 80, 96, 112, 128, 160, 192, 224, 0
};
local const int base_dist[D_CODES] = {
0, 1, 2, 3, 4, 6, 8, 12, 16, 24,
32, 48, 64, 96, 128, 192, 256, 384, 512, 768,
1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576
};

View File

@@ -1,61 +0,0 @@
/* uncompr.c -- decompress a memory buffer
* Copyright (C) 1995-2003 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#define ZLIB_INTERNAL
#include "zlib.h"
/* ===========================================================================
Decompresses the source buffer into the destination buffer. sourceLen is
the byte length of the source buffer. Upon entry, destLen is the total
size of the destination buffer, which must be large enough to hold the
entire uncompressed data. (The size of the uncompressed data must have
been saved previously by the compressor and transmitted to the decompressor
by some mechanism outside the scope of this compression library.)
Upon exit, destLen is the actual size of the compressed buffer.
This function can be used to decompress a whole file at once if the
input file is mmap'ed.
uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
enough memory, Z_BUF_ERROR if there was not enough room in the output
buffer, or Z_DATA_ERROR if the input data was corrupted.
*/
int ZEXPORT uncompress (dest, destLen, source, sourceLen)
Bytef *dest;
uLongf *destLen;
const Bytef *source;
uLong sourceLen;
{
z_stream stream;
int err;
stream.next_in = (Bytef*)source;
stream.avail_in = (uInt)sourceLen;
/* Check for source > 64K on 16-bit machine: */
if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
stream.next_out = dest;
stream.avail_out = (uInt)*destLen;
if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
stream.zalloc = (alloc_func)0;
stream.zfree = (free_func)0;
err = inflateInit(&stream);
if (err != Z_OK) return err;
err = inflate(&stream, Z_FINISH);
if (err != Z_STREAM_END) {
inflateEnd(&stream);
if (err == Z_NEED_DICT || (err == Z_BUF_ERROR && stream.avail_in == 0))
return Z_DATA_ERROR;
return err;
}
*destLen = stream.total_out;
err = inflateEnd(&stream);
return err;
}

View File

@@ -1,323 +0,0 @@
/* zconf.h -- configuration of the zlib compression library
* Copyright (C) 1995-2003 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#ifndef ZCONF_H
#define ZCONF_H
/*
* If you *really* need a unique prefix for all types and library functions,
* compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
*/
#ifdef Z_PREFIX
# define deflateInit_ z_deflateInit_
# define deflate z_deflate
# define deflateEnd z_deflateEnd
# define inflateInit_ z_inflateInit_
# define inflate z_inflate
# define inflateEnd z_inflateEnd
# define deflateInit2_ z_deflateInit2_
# define deflateSetDictionary z_deflateSetDictionary
# define deflateCopy z_deflateCopy
# define deflateReset z_deflateReset
# define deflatePrime z_deflatePrime
# define deflateParams z_deflateParams
# define deflateBound z_deflateBound
# define inflateInit2_ z_inflateInit2_
# define inflateSetDictionary z_inflateSetDictionary
# define inflateSync z_inflateSync
# define inflateSyncPoint z_inflateSyncPoint
# define inflateCopy z_inflateCopy
# define inflateReset z_inflateReset
# define compress z_compress
# define compress2 z_compress2
# define compressBound z_compressBound
# define uncompress z_uncompress
# define adler32 z_adler32
# define crc32 z_crc32
# define get_crc_table z_get_crc_table
# define Byte z_Byte
# define uInt z_uInt
# define uLong z_uLong
# define Bytef z_Bytef
# define charf z_charf
# define intf z_intf
# define uIntf z_uIntf
# define uLongf z_uLongf
# define voidpf z_voidpf
# define voidp z_voidp
#endif
#if defined(__MSDOS__) && !defined(MSDOS)
# define MSDOS
#endif
#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2)
# define OS2
#endif
#if defined(_WINDOWS) && !defined(WINDOWS)
# define WINDOWS
#endif
#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
# define WIN32
#endif
#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32)
# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__)
# ifndef SYS16BIT
# define SYS16BIT
# endif
# endif
#endif
/*
* Compile with -DMAXSEG_64K if the alloc function cannot allocate more
* than 64k bytes at a time (needed on systems with 16-bit int).
*/
#ifdef SYS16BIT
# define MAXSEG_64K
#endif
#ifdef MSDOS
# define UNALIGNED_OK
#endif
#ifdef __STDC_VERSION__
# ifndef STDC
# define STDC
# endif
# if __STDC_VERSION__ >= 199901L
# ifndef STDC99
# define STDC99
# endif
# endif
#endif
#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus))
# define STDC
#endif
#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__))
# define STDC
#endif
#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32))
# define STDC
#endif
#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__))
# define STDC
#endif
#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */
# define STDC
#endif
#ifndef STDC
# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
# define const /* note: need a more gentle solution here */
# endif
#endif
/* Some Mac compilers merge all .h files incorrectly: */
#if defined(__MWERKS__)||defined(applec)||defined(THINK_C)||defined(__SC__)
# define NO_DUMMY_DECL
#endif
/* Maximum value for memLevel in deflateInit2 */
#ifndef MAX_MEM_LEVEL
# ifdef MAXSEG_64K
# define MAX_MEM_LEVEL 8
# else
# define MAX_MEM_LEVEL 9
# endif
#endif
/* Maximum value for windowBits in deflateInit2 and inflateInit2.
* WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
* created by gzip. (Files created by minigzip can still be extracted by
* gzip.)
*/
#ifndef MAX_WBITS
# define MAX_WBITS 15 /* 32K LZ77 window */
#endif
/* The memory requirements for deflate are (in bytes):
(1 << (windowBits+2)) + (1 << (memLevel+9))
that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
plus a few kilobytes for small objects. For example, if you want to reduce
the default memory requirements from 256K to 128K, compile with
make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
Of course this will generally degrade compression (there's no free lunch).
The memory requirements for inflate are (in bytes) 1 << windowBits
that is, 32K for windowBits=15 (default value) plus a few kilobytes
for small objects.
*/
/* Type declarations */
#ifndef OF /* function prototypes */
# ifdef STDC
# define OF(args) args
# else
# define OF(args) ()
# endif
#endif
/* The following definitions for FAR are needed only for MSDOS mixed
* model programming (small or medium model with some far allocations).
* This was tested only with MSC; for other MSDOS compilers you may have
* to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
* just define FAR to be empty.
*/
#ifdef SYS16BIT
# if defined(M_I86SM) || defined(M_I86MM)
/* MSC small or medium model */
# define SMALL_MEDIUM
# ifdef _MSC_VER
# define FAR _far
# else
# define FAR far
# endif
# endif
# if (defined(__SMALL__) || defined(__MEDIUM__))
/* Turbo C small or medium model */
# define SMALL_MEDIUM
# ifdef __BORLANDC__
# define FAR _far
# else
# define FAR far
# endif
# endif
#endif
#if defined(WINDOWS) || defined(WIN32)
/* If building or using zlib as a DLL, define ZLIB_DLL.
* This is not mandatory, but it offers a little performance increase.
*/
# ifdef ZLIB_DLL
# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500))
# ifdef ZLIB_INTERNAL
# define ZEXTERN extern __declspec(dllexport)
# else
# define ZEXTERN extern __declspec(dllimport)
# endif
# endif
# endif /* ZLIB_DLL */
/* If building or using zlib with the WINAPI/WINAPIV calling convention,
* define ZLIB_WINAPI.
* Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI.
*/
# ifdef ZLIB_WINAPI
# ifdef FAR
# undef FAR
# endif
# include <windows.h>
/* No need for _export, use ZLIB.DEF instead. */
/* For complete Windows compatibility, use WINAPI, not __stdcall. */
# define ZEXPORT WINAPI
# ifdef WIN32
# define ZEXPORTVA WINAPIV
# else
# define ZEXPORTVA FAR CDECL
# endif
# endif
#endif
#if defined (__BEOS__)
# ifdef ZLIB_DLL
# ifdef ZLIB_INTERNAL
# define ZEXPORT __declspec(dllexport)
# define ZEXPORTVA __declspec(dllexport)
# else
# define ZEXPORT __declspec(dllimport)
# define ZEXPORTVA __declspec(dllimport)
# endif
# endif
#endif
#ifndef ZEXTERN
# define ZEXTERN extern
#endif
#ifndef ZEXPORT
# define ZEXPORT
#endif
#ifndef ZEXPORTVA
# define ZEXPORTVA
#endif
#ifndef FAR
# define FAR
#endif
#if !defined(__MACTYPES__)
typedef unsigned char Byte; /* 8 bits */
#endif
typedef unsigned int uInt; /* 16 bits or more */
typedef unsigned long uLong; /* 32 bits or more */
#ifdef SMALL_MEDIUM
/* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
# define Bytef Byte FAR
#else
typedef Byte FAR Bytef;
#endif
typedef char FAR charf;
typedef int FAR intf;
typedef uInt FAR uIntf;
typedef uLong FAR uLongf;
#ifdef STDC
typedef void const *voidpc;
typedef void FAR *voidpf;
typedef void *voidp;
#else
typedef Byte const *voidpc;
typedef Byte FAR *voidpf;
typedef Byte *voidp;
#endif
#if 0 /* HAVE_UNISTD_H -- this line is updated by ./configure */
# include <sys/types.h> /* for off_t */
# include <unistd.h> /* for SEEK_* and off_t */
# ifdef VMS
# include <unixio.h> /* for off_t */
# endif
# define z_off_t off_t
#endif
#ifndef SEEK_SET
# define SEEK_SET 0 /* Seek from beginning of file. */
# define SEEK_CUR 1 /* Seek from current position. */
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
#endif
#ifndef z_off_t
# define z_off_t long
#endif
#if defined(__OS400__)
#define NO_vsnprintf
#endif
#if defined(__MVS__)
# define NO_vsnprintf
# ifdef FAR
# undef FAR
# endif
#endif
/* MVS linker does not support external names larger than 8 bytes */
#if defined(__MVS__)
# pragma map(deflateInit_,"DEIN")
# pragma map(deflateInit2_,"DEIN2")
# pragma map(deflateEnd,"DEEND")
# pragma map(deflateBound,"DEBND")
# pragma map(inflateInit_,"ININ")
# pragma map(inflateInit2_,"ININ2")
# pragma map(inflateEnd,"INEND")
# pragma map(inflateSync,"INSY")
# pragma map(inflateSetDictionary,"INSEDI")
# pragma map(compressBound,"CMBND")
# pragma map(inflate_table,"INTABL")
# pragma map(inflate_fast,"INFA")
# pragma map(inflate_copyright,"INCOPY")
#endif
#endif /* ZCONF_H */

View File

@@ -1,159 +0,0 @@
.TH ZLIB 3 "17 November 2003"
.SH NAME
zlib \- compression/decompression library
.SH SYNOPSIS
[see
.I zlib.h
for full description]
.SH DESCRIPTION
The
.I zlib
library is a general purpose data compression library.
The code is thread safe.
It provides in-memory compression and decompression functions,
including integrity checks of the uncompressed data.
This version of the library supports only one compression method (deflation)
but other algorithms will be added later
and will have the same stream interface.
.LP
Compression can be done in a single step if the buffers are large enough
(for example if an input file is mmap'ed),
or can be done by repeated calls of the compression function.
In the latter case,
the application must provide more input and/or consume the output
(providing more output space) before each call.
.LP
The library also supports reading and writing files in
.IR gzip (1)
(.gz) format
with an interface similar to that of stdio.
.LP
The library does not install any signal handler.
The decoder checks the consistency of the compressed data,
so the library should never crash even in case of corrupted input.
.LP
All functions of the compression library are documented in the file
.IR zlib.h .
The distribution source includes examples of use of the library
in the files
.I example.c
and
.IR minigzip.c .
.LP
Changes to this version are documented in the file
.I ChangeLog
that accompanies the source,
and are concerned primarily with bug fixes and portability enhancements.
.LP
A Java implementation of
.I zlib
is available in the Java Development Kit 1.1:
.IP
http://www.javasoft.com/products/JDK/1.1/docs/api/Package-java.util.zip.html
.LP
A Perl interface to
.IR zlib ,
written by Paul Marquess (pmqs@cpan.org),
is available at CPAN (Comprehensive Perl Archive Network) sites,
including:
.IP
http://www.cpan.org/modules/by-module/Compress/
.LP
A Python interface to
.IR zlib ,
written by A.M. Kuchling (amk@magnet.com),
is available in Python 1.5 and later versions:
.IP
http://www.python.org/doc/lib/module-zlib.html
.LP
A
.I zlib
binding for
.IR tcl (1),
written by Andreas Kupries (a.kupries@westend.com),
is availlable at:
.IP
http://www.westend.com/~kupries/doc/trf/man/man.html
.LP
An experimental package to read and write files in .zip format,
written on top of
.I zlib
by Gilles Vollant (info@winimage.com),
is available at:
.IP
http://www.winimage.com/zLibDll/unzip.html
and also in the
.I contrib/minizip
directory of the main
.I zlib
web site.
.SH "SEE ALSO"
The
.I zlib
web site can be found at either of these locations:
.IP
http://www.zlib.org
.br
http://www.gzip.org/zlib/
.LP
The data format used by the zlib library is described by RFC
(Request for Comments) 1950 to 1952 in the files:
.IP
http://www.ietf.org/rfc/rfc1950.txt (concerning zlib format)
.br
http://www.ietf.org/rfc/rfc1951.txt (concerning deflate format)
.br
http://www.ietf.org/rfc/rfc1952.txt (concerning gzip format)
.LP
These documents are also available in other formats from:
.IP
ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html
.LP
Mark Nelson (markn@ieee.org) wrote an article about
.I zlib
for the Jan. 1997 issue of Dr. Dobb's Journal;
a copy of the article is available at:
.IP
http://dogma.net/markn/articles/zlibtool/zlibtool.htm
.SH "REPORTING PROBLEMS"
Before reporting a problem,
please check the
.I zlib
web site to verify that you have the latest version of
.IR zlib ;
otherwise,
obtain the latest version and see if the problem still exists.
Please read the
.I zlib
FAQ at:
.IP
http://www.gzip.org/zlib/zlib_faq.html
.LP
before asking for help.
Send questions and/or comments to zlib@gzip.org,
or (for the Windows DLL version) to Gilles Vollant (info@winimage.com).
.SH AUTHORS
Version 1.2.1
Copyright (C) 1995-2003 Jean-loup Gailly (jloup@gzip.org)
and Mark Adler (madler@alumni.caltech.edu).
.LP
This software is provided "as-is,"
without any express or implied warranty.
In no event will the authors be held liable for any damages
arising from the use of this software.
See the distribution directory with respect to requirements
governing redistribution.
The deflate format used by
.I zlib
was defined by Phil Katz.
The deflate and
.I zlib
specifications were written by L. Peter Deutsch.
Thanks to all the people who reported problems and suggested various
improvements in
.IR zlib ;
who are too numerous to cite here.
.LP
UNIX manual page by R. P. C. Rodgers,
U.S. National Library of Medicine (rodgers@nlm.nih.gov).
.\" end of man page

File diff suppressed because it is too large Load Diff

View File

@@ -1,319 +0,0 @@
/* zutil.c -- target dependent utility functions for the compression library
* Copyright (C) 1995-2003 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#include "zutil.h"
#ifndef NO_DUMMY_DECL
struct internal_state {int dummy;}; /* for buggy compilers */
#endif
#ifndef STDC
extern void exit OF((int));
#endif
const char * const z_errmsg[10] = {
"need dictionary", /* Z_NEED_DICT 2 */
"stream end", /* Z_STREAM_END 1 */
"", /* Z_OK 0 */
"file error", /* Z_ERRNO (-1) */
"stream error", /* Z_STREAM_ERROR (-2) */
"data error", /* Z_DATA_ERROR (-3) */
"insufficient memory", /* Z_MEM_ERROR (-4) */
"buffer error", /* Z_BUF_ERROR (-5) */
"incompatible version",/* Z_VERSION_ERROR (-6) */
""};
const char * ZEXPORT zlibVersion()
{
return ZLIB_VERSION;
}
uLong ZEXPORT zlibCompileFlags()
{
uLong flags;
flags = 0;
switch (sizeof(uInt)) {
case 2: break;
case 4: flags += 1; break;
case 8: flags += 2; break;
default: flags += 3;
}
switch (sizeof(uLong)) {
case 2: break;
case 4: flags += 1 << 2; break;
case 8: flags += 2 << 2; break;
default: flags += 3 << 2;
}
switch (sizeof(voidpf)) {
case 2: break;
case 4: flags += 1 << 4; break;
case 8: flags += 2 << 4; break;
default: flags += 3 << 4;
}
switch (sizeof(z_off_t)) {
case 2: break;
case 4: flags += 1 << 6; break;
case 8: flags += 2 << 6; break;
default: flags += 3 << 6;
}
#ifdef DEBUG
flags += 1 << 8;
#endif
#if defined(ASMV) || defined(ASMINF)
flags += 1 << 9;
#endif
#ifdef ZLIB_WINAPI
flags += 1 << 10;
#endif
#ifdef BUILDFIXED
flags += 1 << 12;
#endif
#ifdef DYNAMIC_CRC_TABLE
flags += 1 << 13;
#endif
#ifdef NO_GZCOMPRESS
flags += 1 << 16;
#endif
#ifdef NO_GZIP
flags += 1 << 17;
#endif
#ifdef PKZIP_BUG_WORKAROUND
flags += 1 << 20;
#endif
#ifdef FASTEST
flags += 1 << 21;
#endif
#ifdef STDC
# ifdef NO_vsnprintf
flags += 1 << 25;
# ifdef HAS_vsprintf_void
flags += 1 << 26;
# endif
# else
# ifdef HAS_vsnprintf_void
flags += 1 << 26;
# endif
# endif
#else
flags += 1 << 24;
# ifdef NO_snprintf
flags += 1 << 25;
# ifdef HAS_sprintf_void
flags += 1 << 26;
# endif
# else
# ifdef HAS_snprintf_void
flags += 1 << 26;
# endif
# endif
#endif
return flags;
}
#ifdef DEBUG
# ifndef verbose
# define verbose 0
# endif
int z_verbose = verbose;
void z_error (m)
char *m;
{
fprintf(stderr, "%s\n", m);
exit(1);
}
#endif
/* exported to allow conversion of error code to string for compress() and
* uncompress()
*/
const char * ZEXPORT zError(err)
int err;
{
return ERR_MSG(err);
}
#if defined(_WIN32_WCE)
/* does not exist on WCE */
int errno = 0;
#endif
#ifndef HAVE_MEMCPY
void zmemcpy(dest, source, len)
Bytef* dest;
const Bytef* source;
uInt len;
{
if (len == 0) return;
do {
*dest++ = *source++; /* ??? to be unrolled */
} while (--len != 0);
}
int zmemcmp(s1, s2, len)
const Bytef* s1;
const Bytef* s2;
uInt len;
{
uInt j;
for (j = 0; j < len; j++) {
if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1;
}
return 0;
}
void zmemzero(dest, len)
Bytef* dest;
uInt len;
{
if (len == 0) return;
do {
*dest++ = 0; /* ??? to be unrolled */
} while (--len != 0);
}
#endif
#ifdef SYS16BIT
#ifdef __TURBOC__
/* Turbo C in 16-bit mode */
# define MY_ZCALLOC
/* Turbo C malloc() does not allow dynamic allocation of 64K bytes
* and farmalloc(64K) returns a pointer with an offset of 8, so we
* must fix the pointer. Warning: the pointer must be put back to its
* original form in order to free it, use zcfree().
*/
#define MAX_PTR 10
/* 10*64K = 640K */
local int next_ptr = 0;
typedef struct ptr_table_s {
voidpf org_ptr;
voidpf new_ptr;
} ptr_table;
local ptr_table table[MAX_PTR];
/* This table is used to remember the original form of pointers
* to large buffers (64K). Such pointers are normalized with a zero offset.
* Since MSDOS is not a preemptive multitasking OS, this table is not
* protected from concurrent access. This hack doesn't work anyway on
* a protected system like OS/2. Use Microsoft C instead.
*/
voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
{
voidpf buf = opaque; /* just to make some compilers happy */
ulg bsize = (ulg)items*size;
/* If we allocate less than 65520 bytes, we assume that farmalloc
* will return a usable pointer which doesn't have to be normalized.
*/
if (bsize < 65520L) {
buf = farmalloc(bsize);
if (*(ush*)&buf != 0) return buf;
} else {
buf = farmalloc(bsize + 16L);
}
if (buf == NULL || next_ptr >= MAX_PTR) return NULL;
table[next_ptr].org_ptr = buf;
/* Normalize the pointer to seg:0 */
*((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4;
*(ush*)&buf = 0;
table[next_ptr++].new_ptr = buf;
return buf;
}
void zcfree (voidpf opaque, voidpf ptr)
{
int n;
if (*(ush*)&ptr != 0) { /* object < 64K */
farfree(ptr);
return;
}
/* Find the original pointer */
for (n = 0; n < next_ptr; n++) {
if (ptr != table[n].new_ptr) continue;
farfree(table[n].org_ptr);
while (++n < next_ptr) {
table[n-1] = table[n];
}
next_ptr--;
return;
}
ptr = opaque; /* just to make some compilers happy */
Assert(0, "zcfree: ptr not found");
}
#endif /* __TURBOC__ */
#ifdef M_I86
/* Microsoft C in 16-bit mode */
# define MY_ZCALLOC
#if (!defined(_MSC_VER) || (_MSC_VER <= 600))
# define _halloc halloc
# define _hfree hfree
#endif
voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
{
if (opaque) opaque = 0; /* to make compiler happy */
return _halloc((long)items, size);
}
void zcfree (voidpf opaque, voidpf ptr)
{
if (opaque) opaque = 0; /* to make compiler happy */
_hfree(ptr);
}
#endif /* M_I86 */
#endif /* SYS16BIT */
#ifndef MY_ZCALLOC /* Any system without a special alloc function */
#ifndef STDC
extern voidp malloc OF((uInt size));
extern voidp calloc OF((uInt items, uInt size));
extern void free OF((voidpf ptr));
#endif
voidpf zcalloc (opaque, items, size)
voidpf opaque;
unsigned items;
unsigned size;
{
if (opaque) items += size - size; /* make compiler happy */
return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) :
(voidpf)calloc(items, size);
}
void zcfree (opaque, ptr)
voidpf opaque;
voidpf ptr;
{
free(ptr);
if (opaque) return; /* make compiler happy */
}
#endif /* MY_ZCALLOC */

View File

@@ -1,258 +0,0 @@
/* zutil.h -- internal interface and configuration of the compression library
* Copyright (C) 1995-2003 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
/* @(#) $Id$ */
#ifndef ZUTIL_H
#define ZUTIL_H
#define ZLIB_INTERNAL
#include "zlib.h"
#ifdef STDC
# include <stddef.h>
# include <string.h>
# include <stdlib.h>
#endif
#ifdef NO_ERRNO_H
extern int errno;
#else
# include <errno.h>
#endif
#ifndef local
# define local static
#endif
/* compile with -Dlocal if your debugger can't find static symbols */
typedef unsigned char uch;
typedef uch FAR uchf;
typedef unsigned short ush;
typedef ush FAR ushf;
typedef unsigned long ulg;
extern const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
/* (size given to avoid silly warnings with Visual C++) */
#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
#define ERR_RETURN(strm,err) \
return (strm->msg = (char*)ERR_MSG(err), (err))
/* To be used only when the state is known to be valid */
/* common constants */
#ifndef DEF_WBITS
# define DEF_WBITS MAX_WBITS
#endif
/* default windowBits for decompression. MAX_WBITS is for compression only */
#if MAX_MEM_LEVEL >= 8
# define DEF_MEM_LEVEL 8
#else
# define DEF_MEM_LEVEL MAX_MEM_LEVEL
#endif
/* default memLevel */
#define STORED_BLOCK 0
#define STATIC_TREES 1
#define DYN_TREES 2
/* The three kinds of block type */
#define MIN_MATCH 3
#define MAX_MATCH 258
/* The minimum and maximum match lengths */
#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
/* target dependencies */
#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32))
# define OS_CODE 0x00
# if defined(__TURBOC__) || defined(__BORLANDC__)
# if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
/* Allow compilation with ANSI keywords only enabled */
void _Cdecl farfree( void *block );
void *_Cdecl farmalloc( unsigned long nbytes );
# else
# include <alloc.h>
# endif
# else /* MSC or DJGPP */
# include <malloc.h>
# endif
#endif
#ifdef AMIGA
# define OS_CODE 0x01
#endif
#if defined(VAXC) || defined(VMS)
# define OS_CODE 0x02
# define F_OPEN(name, mode) \
fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
#endif
#if defined(ATARI) || defined(atarist)
# define OS_CODE 0x05
#endif
#ifdef OS2
# define OS_CODE 0x06
#endif
#if defined(MACOS) || defined(TARGET_OS_MAC)
# define OS_CODE 0x07
# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
# include <unix.h> /* for fdopen */
# else
# ifndef fdopen
# define fdopen(fd,mode) NULL /* No fdopen() */
# endif
# endif
#endif
#ifdef TOPS20
# define OS_CODE 0x0a
#endif
#ifdef WIN32
# ifndef __CYGWIN__ /* Cygwin is Unix, not Win32 */
# define OS_CODE 0x0b
# endif
#endif
#ifdef __50SERIES /* Prime/PRIMOS */
# define OS_CODE 0x0f
#endif
#if defined(_BEOS_) || defined(RISCOS)
# define fdopen(fd,mode) NULL /* No fdopen() */
#endif
#if (defined(_MSC_VER) && (_MSC_VER > 600))
# if defined(_WIN32_WCE)
# define fdopen(fd,mode) NULL /* No fdopen() */
# ifndef _PTRDIFF_T_DEFINED
typedef int ptrdiff_t;
# define _PTRDIFF_T_DEFINED
# endif
# else
# define fdopen(fd,type) _fdopen(fd,type)
# endif
#endif
/* common defaults */
#ifndef OS_CODE
# define OS_CODE 0x03 /* assume Unix */
#endif
#ifndef F_OPEN
# define F_OPEN(name, mode) fopen((name), (mode))
#endif
/* functions */
#if defined(STDC99) || (defined(__TURBOC__) && __TURBOC__ >= 0x550)
# ifndef HAVE_VSNPRINTF
# define HAVE_VSNPRINTF
# endif
#endif
#if defined(__CYGWIN__)
# ifndef HAVE_VSNPRINTF
# define HAVE_VSNPRINTF
# endif
#endif
#ifndef HAVE_VSNPRINTF
# ifdef MSDOS
/* vsnprintf may exist on some MS-DOS compilers (DJGPP?),
but for now we just assume it doesn't. */
# define NO_vsnprintf
# endif
# ifdef __TURBOC__
# define NO_vsnprintf
# endif
# ifdef WIN32
/* In Win32, vsnprintf is available as the "non-ANSI" _vsnprintf. */
# if !defined(vsnprintf) && !defined(NO_vsnprintf)
# define vsnprintf _vsnprintf
# endif
# endif
# ifdef __SASC
# define NO_vsnprintf
# endif
#endif
#ifdef HAVE_STRERROR
extern char *strerror OF((int));
# define zstrerror(errnum) strerror(errnum)
#else
# define zstrerror(errnum) ""
#endif
#if defined(pyr)
# define NO_MEMCPY
#endif
#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
/* Use our own functions for small and medium model with MSC <= 5.0.
* You may have to use the same strategy for Borland C (untested).
* The __SC__ check is for Symantec.
*/
# define NO_MEMCPY
#endif
#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
# define HAVE_MEMCPY
#endif
#ifdef HAVE_MEMCPY
# ifdef SMALL_MEDIUM /* MSDOS small or medium model */
# define zmemcpy _fmemcpy
# define zmemcmp _fmemcmp
# define zmemzero(dest, len) _fmemset(dest, 0, len)
# else
# define zmemcpy memcpy
# define zmemcmp memcmp
# define zmemzero(dest, len) memset(dest, 0, len)
# endif
#else
extern void zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
extern int zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
extern void zmemzero OF((Bytef* dest, uInt len));
#endif
/* Diagnostic functions */
#ifdef DEBUG
# include <stdio.h>
extern int z_verbose;
extern void z_error OF((char *m));
# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
# define Trace(x) {if (z_verbose>=0) fprintf x ;}
# define Tracev(x) {if (z_verbose>0) fprintf x ;}
# define Tracevv(x) {if (z_verbose>1) fprintf x ;}
# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;}
# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;}
#else
# define Assert(cond,msg)
# define Trace(x)
# define Tracev(x)
# define Tracevv(x)
# define Tracec(c,x)
# define Tracecv(c,x)
#endif
voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
void zcfree OF((voidpf opaque, voidpf ptr));
#define ZALLOC(strm, items, size) \
(*((strm)->zalloc))((strm)->opaque, (items), (size))
#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
#endif /* ZUTIL_H */