Overview
SIMPLE_COMPRESSION provides easy-to-use compression for Eiffel applications, wrapping the ISE zlib library.
Key Features
- String compression/decompression
- Base64-encoded compression for text storage
- Byte array support
- File compression
- Streaming for large files
- Configurable compression levels (0-9)
- CRC32/Adler32 checksums
Quick Start
<library name="simple_compression" location="$SIMPLE_COMPRESSION/simple_compression.ecf"/>
Basic Usage
local
comp: SIMPLE_COMPRESSION
compressed: STRING
do
create comp.make
-- Compress a string
compressed := comp.compress_string ("Hello, World!")
-- Decompress
print (comp.decompress_string (compressed))
-- Best compression
comp.set_level_best
compressed := comp.compress_string (large_data)
print ("Saved " + comp.compression_percentage.out + "%%")
end
API Reference
Compression Levels
| Feature | Description |
set_level (0-9) | Set compression level |
set_level_fast | Level 1 - fastest |
set_level_default | Level 6 - balanced |
set_level_best | Level 9 - smallest |
String Operations
| Feature | Description |
compress_string (str) | Compress to raw bytes |
decompress_string (data) | Decompress string |
compress_string_base64 (str) | Compress to Base64 |
decompress_string_base64 (b64) | Decompress from Base64 |
File Operations
| Feature | Description |
compress_file (src, dest) | Compress file |
decompress_file (src, dest) | Decompress file |
read_compressed_file (path) | Read and decompress |
write_compressed_file (path, data) | Compress and write |
Checksums
| Feature | Description |
crc32 (data) | Calculate CRC32 |
adler32 (data) | Calculate Adler-32 |
validate_checksum (data, crc) | Verify CRC32 |
Statistics
| Feature | Description |
compression_ratio | Input/output ratio |
compression_percentage | Size reduction % |
space_savings | Human-readable summary |
Streaming API
For large files, use SIMPLE_COMPRESSION_STREAM:
local
stream: SIMPLE_COMPRESSION_STREAM
do
create stream.make_compress ("output.gz")
stream.write ("Chunk 1...")
stream.write ("Chunk 2...")
stream.close
end