BSライブラリ

◆戻る

BSライブラリは、僕が個人的に作ったC++クラスの寄せ集めです。 自分だけで使っているより、同じようなプログラムを利用したい人に使ってもらえる方が楽しいので公開することにしました。
下に紹介しているのは一部で、残りは満足な説明のないものがほとんどですが、ヘッダファイルを見ればだいたい使い方が分かるものも多いと思います。 ただし、未完成っぽいものもあるので、利用される場合はそのつもりでご利用下さい。 たぶんその場合はそのまま使うよりも、使いやすいように適宜改変して使用する方がいいかもしれませんね。

ダウンロード(32KB)

最近おすすめのもの

汎用性、移植性、ともに自信のあるもの。
最近、個人で作るライブラリは小さくて独立性の高いものがいいと思うようになりました。
countptr.h count_ptrテンプレート
auto_ptrの変種で、 参照カウントにより「ハンドル」としての機能を実現する。
単体で使用可能。
autoarray.h auto_arrayテンプレート
auto_ptrの変種で、 new[] により確保されたメモリを保持し、delete[] で解放する。
単体で使用可能。
bsWString.h bsWString.cpp ワイド文字列の敷居を下げる小品
型WString及びそれとstringとの変換関数を提供する。
多国語に実行時同時対応するという意味での国際化対応アプリを書くには、世界共通の巨大文字集合を使用する他はありません。そのためには、現状で8ビットしかない(おそらく将来も変わらない)char型には、別れを告げるべきだと思いませんか。将来、素晴らしい国際文字コードが定義されたときに、すぐにそれを受け入れられるように準備しましょう。必要なことは、ソフトウェアの重要なロジックではいつもワイド文字列を使うということ。C++にはwstringがある。
しかしwstringは現状でちょこっと不便です。stringとの手頃な変換関数がありません。いくらすべてワイド文字列でやろうと思っても、扱うテキストファイルやライブラリがcharベースだったら相互変換は必須になります。
そこで、bsWStringモジュールはこの変換関数を提供します。おまけに、wstringの代わりとなるWStringという型(実際はwstringのエイリアス)を提供します。これは将来、異なる文字コードへの以降を単純化するために役立つと思います。例えば32ビット文字集合へ移行したいが、wchar_tが16ビットというときに。
単体で使用可能。
bsFastString.h bsfstr.h 文字列テンプレートクラスFastString
basic_stringよりも高速でプリミティブなbasic_string下位互換文字列クラスFastStringを提供する。
標準ライブラリのstringは通常、パフォーマンスを上げる目的で書き込み時コピーに対応するために参照回数計測とマルチスレッド対策を強いられています。このことが逆に大きな非効率を生む場合もある。FastStringは書き込み時コピーをしません。このことが高効率を生む場合があるわけです。これ以上説明は要らないでしょう。
なおFastStringの機能はbasic_stringのサブセットです。basic_stringに含まれる大量のメンバ関数のほとんどは、FastStringにはまだ含まれません。
このモジュールを使うには以下のファイルが必要。
bscomp.h bsdef.h bsmemory.h
さらに以下のBSライブラリにあるプリミティブなvector互換コンテナ「Array」を併用すれば、より高い効率を得られるに違いありません。FastStringのテンプレートパラメータの3つ目にArray<T>を指定することでこれを使用することができる。
bsarray.h
bsarray.h vector互換テンプレートクラスArray
Arrayは、STLに含まれる配列型コンテナクラスvectorと同じインターフェイスを持つテンプレートクラスです。つまりvectorの代わりに使えます。
このクラスの存在意義は、ちょっと古くてSTLが利用できないようなコンパイラを使っている場合に、コンテナだけでも標準のもの(と同じに使えるもの)を利用することにあります。つまり、Arrayを使って作ったプログラムを最新のコンパイラに移行する場合は単にArrayをvectorに置き換えるだけでよいのです。
もう一つの利用価値は、もしかしたらvectorよりもコードが小さくなるとか、高速なコードが生成される可能性です。これについては何とも言いません。
MS-DOSのような16ビット環境ではSTLを利用できるコンパイラはほとんどありません。その代わりにコンパイラ独自のクラスライブラリが付属していたりしますが、そのようなライブラリを使用するとあとで別のコンパイラに移行することが困難になります。このクラスはそんな、テンプレートは使えるがSTLは使えない、中途半端なコンパイラを利用しなければならない場合に生きてくるでしょう。
利用できることを確認しているコンパイラは以下のものです。
Borland C++ 5.0 STLは付属するが32ビットコンパイラでしか使えないので、16ビットコンパイラの場合にArrayを利用すると良いでしょう。
WATCOM C/C++ 10.5以降 WATCOMは良いコンパイラですが、STLが付属していません。ただしWATCOMで利用できるSTLは入手可能なので、必ずしもArrayを使う必要はありませんが、vectorだけ使えればいいというときにはわざわざSTLを導入するよりも手軽と言えます。
C++Builder 1.0以降 C++BuilderでArrayを利用することも可能ですが、STLが使えるので、意味はないでしょう。

このモジュールを使うには以下のファイルが必要。
bscomp.h bsdef.h bsmemory.h

使用可能なコンパイラ

最近のVisualC++やC++Builderのような新しいコンパイラであれば、どれも問題なくコンパイルできると思っています。ただし実際に確認しているわけではないので、問題があれば適宜修正してご利用下さい。

配布条件など

本ライブラリの著作権は T.Shinohara にあります。 ですが、みなさんのプログラム中に自由に組み込んで利用できます。 本ライブラリを改変して使用することも自由です。
mailto: "T.Shinohara" <seahorse@ps.ksky.ne.jp>
Last update: 2000/ 3/ 5