# Zstandard library : usage examples

- [Simple compression](simple_compression.c) : Compress a single file. Introduces usage of :
  `ZSTD_compress()`

- [Simple decompression](simple_decompression.c) : Decompress a single file. Only compatible with
  simple compression. Result remains in memory. Introduces usage of : `ZSTD_decompress()`

- [Multiple simple compression](multiple_simple_compression.c) : Compress multiple files (in simple
  mode) in a single command line. Demonstrates memory preservation technique that minimizes
  malloc()/free() calls by re-using existing resources. Introduces usage of : `ZSTD_compressCCtx()`

- [Streaming memory usage](streaming_memory_usage.c) : Provides amount of memory used by streaming
  context. Introduces usage of : `ZSTD_sizeof_CStream()`

- [Streaming compression](streaming_compression.c) : Compress a single file. Introduces usage of :
  `ZSTD_compressStream()`

- [Multiple Streaming compression](multiple_streaming_compression.c) : Compress multiple files (in
  streaming mode) in a single command line. Introduces memory usage preservation technique, reducing
  impact of malloc()/free() and memset() by re-using existing resources.

- [Streaming decompression](streaming_decompression.c) : Decompress a single file compressed by
  zstd. Compatible with both simple and streaming compression. Result is sent to stdout. Introduces
  usage of : `ZSTD_decompressStream()`

- [Dictionary compression](dictionary_compression.c) : Compress multiple files using the same
  dictionary. Introduces usage of : `ZSTD_createCDict()` and `ZSTD_compress_usingCDict()`

- [Dictionary decompression](dictionary_decompression.c) : Decompress multiple files using the same
  dictionary. Result remains in memory. Introduces usage of : `ZSTD_createDDict()` and
  `ZSTD_decompress_usingDDict()`
