# porter/libsrc/porter/infra/compress/compress.h

# 1 ファイル

## 1.1 porter/libsrc/porter/infra/compress/compress.h

データ圧縮・解凍モジュールの内部ヘッダー。

プラットフォームごとに異なる圧縮 API を共通インターフェースで抽象化します。

OS | 使用ライブラリ | フォーマット
--- | --- | ---
Linux | zlib (deflate/inflate, windowBits = -15) | raw DEFLATE
Windows | Compression API (MSZIP | COMPRESS_RAW)

両 OS とも raw DEFLATE (RFC 1951) を出力するため、クロスプラットフォーム互換 通信が可能です。

圧縮ペイロードのフォーマット:

    [元サイズ: uint32_t (ネットワークバイトオーダー)] [raw DEFLATE データ]

### 1.1.1 作者

c-modernization-kit sample team

### 1.1.2 バージョン

1.0.0

### 1.1.3 日付

2026/03/05

### 1.1.4 著作権

Copyright (C) CompanyName, Ltd. 2026. All rights reserved.

# 2 関数

## 2.1 potr_compress

    int potr_compress ( uint8_t *dst, size_t *dst_len, const uint8_t *src, size_t src_len )

データを圧縮します。

### 2.1.1 引数

- dst [out] 圧縮後データを格納するバッファ。 先頭 4 バイトに元サイズ (NBO) が書き込まれます。
- dst_len [in,out] 入力: dst のバッファサイズ。 出力: 書き込んだバイト数。
- src [in] 圧縮前データへのポインタ。
- src_len [in] 圧縮前データのバイト数。

### 2.1.2 戻り値

成功時は 0、失敗時は -1 を返します。

## 2.2 potr_decompress

    int potr_decompress ( uint8_t *dst, size_t *dst_len, const uint8_t *src, size_t src_len )

圧縮データを解凍します。

### 2.2.1 引数

- dst [out] 解凍後データを格納するバッファ。
- dst_len [in,out] 入力: dst のバッファサイズ。 出力: 書き込んだバイト数。
- src [in] 圧縮後データへのポインタ (先頭 4 バイトは元サイズ)。
- src_len [in] 圧縮後データのバイト数 (ヘッダーを含む)。

### 2.2.2 戻り値

成功時は 0、失敗時は -1 を返します。

# 3 定数、マクロ

## 3.1 POTR_COMPRESS_HEADER_SIZE

    #define POTR_COMPRESS_HEADER_SIZE 4U

圧縮ペイロード先頭に付加する元サイズフィールドのバイト数。

## 3.2 POTR_COMPRESS_BUF_SIZE

    #define POTR_COMPRESS_BUF_SIZE (POTR_COMPRESS_HEADER_SIZE + POTR_MAX_MESSAGE_SIZE + 64U)

圧縮後の最大バッファサイズ (元データ + ヘッダー + DEFLATE オーバーヘッド)。