*事例 [#g500aa86]

-[[TYPEALIGN()/postgresql-8.1.4]]

*課題 [#l5fb7bc7]

ソースコードを読むだけでは意味がわからないTYPEALIGN()という処理があった。
内容は以下のような短いものだった。

 #define TYPEALIGN(ALIGNVAL,LEN) \
 (((long) (LEN) + ((ALIGNVAL) - 1)) & ~((long) ((ALIGNVAL) - 1)))

処理内容をコードからそのまま表現すると、

「LEN+ALIGNVAL-1の値と、ALIGNVAL-1の値の補数の間で、ビットごとのAND演算を行い、その結果を返す。」

となる。
しかし、これでは意味がわからず、上位の処理の概要も書けない。

*解決方法 [#v200e46d]

動作事例をいくつかテキストファイルに書いて、動作を考えてみることにした。

すると、LEN以上のALIGNVALの倍数のうち最小の値が得られることに気が付いた。
そこで、概要の欄に、

「LEN以上であるALIGNVALの倍数のうち、最小値を返す。」

と追記した。
そして、備考の欄に動作事例を貼り付けて、説明の根拠とした。

*履歴 [#a42111a6]

-作者:[[testnoda/ページ作者]]
-日付:2007/2/25


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS