forked from madler/zlib
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
63 changed files
with
2,463 additions
and
506 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
---------------------------------------------------------------- | ||
-- ZLib for Ada thick binding. -- | ||
-- -- | ||
-- Copyright (C) 2002-2004 Dmitriy Anisimkov -- | ||
-- -- | ||
-- Open source license information is in the zlib.ads file. -- | ||
---------------------------------------------------------------- | ||
-- | ||
-- $Id: buffer_demo.adb,v 1.3 2004/09/06 06:55:35 vagul Exp $ | ||
|
||
-- This demo program provided by Dr Steve Sangwine <sjs@essex.ac.uk> | ||
-- | ||
-- Demonstration of a problem with Zlib-Ada (already fixed) when a buffer | ||
-- of exactly the correct size is used for decompressed data, and the last | ||
-- few bytes passed in to Zlib are checksum bytes. | ||
|
||
-- This program compresses a string of text, and then decompresses the | ||
-- compressed text into a buffer of the same size as the original text. | ||
|
||
with Ada.Streams; use Ada.Streams; | ||
with Ada.Text_IO; | ||
|
||
with ZLib; use ZLib; | ||
|
||
procedure Buffer_Demo is | ||
EOL : Character renames ASCII.LF; | ||
Text : constant String | ||
:= "Four score and seven years ago our fathers brought forth," & EOL & | ||
"upon this continent, a new nation, conceived in liberty," & EOL & | ||
"and dedicated to the proposition that `all men are created equal'."; | ||
|
||
Source : Stream_Element_Array (1 .. Text'Length); | ||
for Source'Address use Text'Address; | ||
|
||
begin | ||
Ada.Text_IO.Put (Text); | ||
Ada.Text_IO.New_Line; | ||
Ada.Text_IO.Put_Line | ||
("Uncompressed size : " & Positive'Image (Text'Length) & " bytes"); | ||
|
||
declare | ||
Compressed_Data : Stream_Element_Array (1 .. Text'Length); | ||
L : Stream_Element_Offset; | ||
begin | ||
Compress : declare | ||
Compressor : Filter_Type; | ||
I : Stream_Element_Offset; | ||
begin | ||
Deflate_Init (Compressor); | ||
|
||
-- Compress the whole of T at once. | ||
|
||
Translate (Compressor, Source, I, Compressed_Data, L, Finish); | ||
pragma Assert (I = Source'Last); | ||
|
||
Close (Compressor); | ||
|
||
Ada.Text_IO.Put_Line | ||
("Compressed size : " | ||
& Stream_Element_Offset'Image (L) & " bytes"); | ||
end Compress; | ||
|
||
-- Now we decompress the data, passing short blocks of data to Zlib | ||
-- (because this demonstrates the problem - the last block passed will | ||
-- contain checksum information and there will be no output, only a | ||
-- check inside Zlib that the checksum is correct). | ||
|
||
Decompress : declare | ||
Decompressor : Filter_Type; | ||
|
||
Uncompressed_Data : Stream_Element_Array (1 .. Text'Length); | ||
|
||
Block_Size : constant := 4; | ||
-- This makes sure that the last block contains | ||
-- only Adler checksum data. | ||
|
||
P : Stream_Element_Offset := Compressed_Data'First - 1; | ||
O : Stream_Element_Offset; | ||
begin | ||
Inflate_Init (Decompressor); | ||
|
||
loop | ||
Translate | ||
(Decompressor, | ||
Compressed_Data | ||
(P + 1 .. Stream_Element_Offset'Min (P + Block_Size, L)), | ||
P, | ||
Uncompressed_Data | ||
(Total_Out (Decompressor) + 1 .. Uncompressed_Data'Last), | ||
O, | ||
No_Flush); | ||
|
||
Ada.Text_IO.Put_Line | ||
("Total in : " & Count'Image (Total_In (Decompressor)) & | ||
", out : " & Count'Image (Total_Out (Decompressor))); | ||
|
||
exit when P = L; | ||
end loop; | ||
|
||
Ada.Text_IO.New_Line; | ||
Ada.Text_IO.Put_Line | ||
("Decompressed text matches original text : " | ||
& Boolean'Image (Uncompressed_Data = Source)); | ||
end Decompress; | ||
end; | ||
end Buffer_Demo; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.