gintenlib

immutable な string クラスを作りたい(4)

前回 の続き。 作った immutable_string に文字列結合を追加し、簡単なベンチマークを行ってみます。 さて文字列を結合する方法ですが、今回は単純に immutable_string_buffer を拡張します。 namespace gintenlib { // 本題 class immutable_string_buffer …

immutable な string クラスを作りたい(3)

前回 の続き。 作った immutable_string_impl を用いて基本的な部分を実装してみます。 と、その前に、 immutable_string_impl の設計を、少し見直します。 せっかく immutable なので、ハッシュ値を予め計算しておくことで、比較の高速化を図りたいのです。…

immutable な string クラスを作りたい(2)

前回 の続き。 用意した可変長バッファに、参照カウントを仕込みます。 しかし、単純に参照カウントを組み込むだけではつまらないので、一工夫。 参照カウントの部分を、それ以外の部分とは独立した部品として切り出してみます。 そうすれば、以降に参照カウ…

immutable な string クラスを作りたい(1)

C++標準のstd::stringは非常に優秀な文字列ライブラリですが、少しばかりオーバースペックに感じる時があります。 現行の std::strinig は copy-on-write 方式を採用出来るように設計されているのですが、そもそも文字列を書き換えたい場合って少ないので、 …

Ginten C++ Libraries のプロジェクトページを立ち上げました

プロジェクトページ: http://sourceforge.jp/projects/gintenlib/Gitリポジトリ: http://git.sourceforge.jp/view?p=gintenlib/gintenlib.git 今後は以上のページから、銀天ライブラリの最新版が入手出来ます。 銀天研究所の方でも一応はファイルを置いて…

sourceforge.jp に銀天ライブラリの申請をしてみました

そろそろ俺ライブラリの制作も本気を出しますよ、って意思発表として、興味はあったけど今まで使わずにいた SourceForge.jp に銀天ライブラリのプロジェクトを申請してみました。これで、上手く行けば、銀天ライブラリの制作がぐっと楽になりますね。とはい…

とりあえずメモリを確保→後からオブジェクトを構築するテク

C++でコーディングしていると、「とりあえずオブジェクトの入る場所は確保しておきたいけど、今はまだオブジェクト自身を作りたくはない」という場面に時折出くわします。 そういう場合、ポインタと std::auto_ptr (あるいは boost::scoped_ptr )を使って…

gintenlib-1.0.0 でやりたいこと

C++非汎用俺ライブラリである「銀天ライブラリ」を、現行の version 1.0.0 beta から正式リリースの version 1.0.0 へアップデートするにあたって、ドキュメント整備以外にやっておきたい事を、自分へのメモとして適当に書いておくことにします。 options ラ…

gintenlib.cast を使う

これは、使用例を見れば一目瞭然でしょう: #include <gintenlib/cast.hpp> #include <iostream> using namespace std; // 適当に多重定義関数を用意します void hoge( int ) { cout << "int version\n"; } void hoge( void* ){ cout << "void* version\n"; } // 同様にクラスに対しても関</iostream></gintenlib/cast.hpp>…

gintenlib::new_ を使う

gintenlib::new_ は、新しくオブジェクトを new 演算子を用いて生成し、そのアドレスを boost::shared_ptr に格納して返す関数テンプレートです。 これだけならば boost::make_shared を使うべきなのですが、gintenlib::new_ には boost::make_shared に存在…

gintenlib-1.0.0-beta における収録ライブラリ一覧

スマートポインタ new_ ヘッダ <gintenlib/new_.hpp> に収録。指定された引数で new 演算子を呼び出し boost::shared_ptr に格納して返す関数です。具体的には、 gintenlib::new_<typename>( argument-list ) というコードが boost::shared_ptr<typename>( new typename( argument-list ) ) と等価に</typename></typename></gintenlib/new_.hpp>…

gintenlib::options ライブラリ

銀天ライブラリは ver1.0.0 から options ライブラリを公開します。 このライブラリは <unistd.h> に収録されている getopt 関数の代替として使うことの出来る、プログラムオプション解析用のライブラリです。 boost にも同名の options ライブラリが存在しますが、銀</unistd.h>…

銀天ライブラリのコンセプト

ライブラリを作るにあたって、ライブラリの方向性というものは非常に大事です。 特にこの銀天ライブラリのような、特にジャンルの決まっていない、こまごまとしたものを集めて形としたライブラリでは、そのコンセプトを明確に決めないと、とりとめのない、意…

pimplイディオムの楽チン実装法

僕の最近のプログラミングでは、どうも pimpl イディオムを使う事が多いです。 最近のプログラミング、って、まぁゲーム作ってるんですけど、やっぱりゲームみたいな大きなプロジェクトだと分割コンパイルは必須なんですよね。 そうなると、どうしても pimpl…

省略の美学

最近 boost を使いながらゲーム製作してて、ふと思うことがある。 なるほどboostは便利だ。けど、boostのコンテンツって、なんか名前が長くないか? と。 よく使われるshared_ptrも、確かに boost 中じゃ短い部類なんだけど、hoge* p;とboost::shared_ptr p;…

久しぶりにC++の小物を作ってみた

最近Civ4ばっかりで飽きてきたので、気分転換にC++をしてみる。 んで、せっかくC++なのだから、とゲーム製作をしてみることに。 僕は現在 CygWin とテキストエディタを使ってコーディングしているので、 DirectX を使用するだけでも一悶着あったりしたのだが…

エレガント(当社比)に HTML 文字参照をエンコードする方法

というわけで(前回参照)、文字参照を奇麗に書き表す方法を考えることにする。