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 は .NETJava の String に
似た機能を持ったクラスですが、std::wstring と自動的に相互変換できます。