• Showing Page History #42336

libpack

libpackはCのデータをバイナリ列としてシリアライズする小さなライブラリです。「プログラミング作法(The Practice of Programming) Brian Kernighan, Rob Pike」に記述があります。sprintfのように書式文字列と可変引数により、データをパッケージします。

特徴

  • とにかくシンプルに構成します。
  • 可変引数とva_listの両方をサポートします。

シンプルな構成は、パワフルな計算機での使用だけでなく、ロボットや組み込み機器のようなマイコンでの利用も想定しているためです。外部のライブラリに依存せず、ANSI-Cの機能のみで実現することとしています。

このアイデアは、いくつかのスクリプト言語でバイナリデータを作成するために使われています。

  • Perlのpack/unpack
  • Pythonのstruct
  • Ruby struct

プロジェクトを作成してから知りましたが、同様の機能を実現する同名のライブラリを公開している方が居ました。なんてこった。改名が必要? 見てみると、ちょっと不便な部分があります。