エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

ビット操作の構造をガラット変更

コードの重複がひどいことになってきていたので、コードを縮める方法を今週は考えていました。
で、その結果、ガラットかわりました。

最新:GitHub - mattsan/BitOperation: operating bits classes
(2010/03/19時点:GitHub - mattsan/BitOperation at 0e96e6754e6375347cfbd7f9a46266718bb342a1)


いままではこんな感じでした。

using namespace emattsan::bits;

Signed<8>   s8; // 符号付き8ビット整数
Unsigned<6> u6; // 符号なし6ビット整数

Signed<12, short>   s12; // 符号付き12ビット整数(内部で値の格納にはsigned shortを使う)
Unsigned<12, short> u12; // 符号なし12ビット整数(内部で値の格納にはunsigned shortを使う)


2種類のクラステンプレートを定義していることと、符号付き/なしの情報が冗長。
で、格納に使う型の符号付き/なしをクラスの符号付き/なしに反映するように変更しました。

using namespace emattsan::bits;

Bits<8, signed>   s8;   // 符号付き8ビット整数
Bits<6>           u6;   // 符号なし6ビット整数
Bits<6, unsigned> u6_2; // Bits<6>とおなじ

Bits<12, signed short>   s12; // 符号付き12ビット整数(内部で値の格納にはsigned shortを使う)
Bits<12, unsigned short> u12; // 符号なし12ビット整数(内部で値の格納にはunsigned shortを使う)


加えて。現時点では論理積(|)と論理積(&)とそれらの複合代入演算子、インクリメント演算子とデクリメント演算子を追加。


すっかり書き直したので、次はもう一度パフォーマンス測定の予定。