lix:CharSequence

XML パーサを作りにあたって、細切れのstringオブジェクトを作るのを避けたかったので、
元々のXMLドキュメントはそのままにしておいてその中の文字位置と文字列長で文字列を占めるという戦略をとりたく、
そのために作ったクラスです。

https://code.google.com/p/lix-xml/source/browse/trunk/lix/char_sequence.h

特に面白いことは何もしていない、文字列の先頭ポインタと文字列長を持つクラスです。
辞書順比較の演算子を作ったので、これが地味にいろんなところで使えたりします。

例えば、string -> string のテーブルなども、内容が変化しないのであれば std::map ではなく、std::map にしてリテラルのままいけるようになったりします。

    // これは一旦入れたら変化しないものとして、
    map<string,string> table;
    table["&gt;"] = ">"; // これは無駄に string オブジェクトができてる。
    table["&lt;"] = "<";
    
    // これで(記述はめんどくさくなるけど) string 作らずにいける
    map<CharSequence,CharSequence> table;
    table[CharSequence("&gt;")] = CharSequence(">");
    table[CharSequence("&lt;")] = CharSequence("<");