balor と STL の連携
balor は C++ 標準ライブラリである STL と連携して使いやすいように作られています。
例えば balor の関数引数でしばしば使われる ArrayRange は
様々な配列表現をそのまま関数に渡せるようにします。
Bitmap bitmap(100, 100, Bitmap::Format::palette8bpp); // ArrayRange 引数に固定長配列を渡す。 Color staticArray[] = {Color::red(), Color::green(), Color::blue()}; bitmap.palette(staticArray); // ArrayRange 引数に vector を渡す。 std::vector<Color> stdVector; stdVector.push_back(Color::red()); stdVector.push_back(Color::green()); stdVector.push_back(Color::blue()); bitmap.palette(stdVector); // ArrayRange 引数にポインターと配列サイズを渡す。 Color* pointer = staticArray; bitmap.palette(ArrayRange<const Color>(pointer, 3));
また、同様に関数引数でしばしば使われる StringRange は
様々な文字列表現をそのまま関数に渡せるようにします。
String s(L"abc"); // String::compareTo は StringRange を引数に取るので // 文字列ポインタ, String, StringBuffer, wstring を渡すことができる。 s.compareTo(L"abc"); s.compareTo(String(L"abc")); s.compareTo(StringBuffer(L"abc")); s.compareTo(std::wstring(L"abc"));
上記コードにでてくる balor::String は .NET や Java の String に
似た機能を持ったクラスですが、std::wstring と自動的に相互変換できます。