コードの重複がひどいことになってきていたので、コードを縮める方法を今週は考えていました。
で、その結果、ガラットかわりました。
最新: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を使う)
加えて。現時点では論理積(|
)と論理積(&
)とそれらの複合代入演算子、インクリメント演算子とデクリメント演算子を追加。
すっかり書き直したので、次はもう一度パフォーマンス測定の予定。