SIMPLE_COMPRESSION

Simple compression wrapper for ISE zlib library

Overview

SIMPLE_COMPRESSION provides easy-to-use compression for Eiffel applications, wrapping the ISE zlib library.

Key Features

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

FeatureDescription
set_level (0-9)Set compression level
set_level_fastLevel 1 - fastest
set_level_defaultLevel 6 - balanced
set_level_bestLevel 9 - smallest

String Operations

FeatureDescription
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

FeatureDescription
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

FeatureDescription
crc32 (data)Calculate CRC32
adler32 (data)Calculate Adler-32
validate_checksum (data, crc)Verify CRC32

Statistics

FeatureDescription
compression_ratioInput/output ratio
compression_percentageSize reduction %
space_savingsHuman-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