2010-10-27-01-文字コードの話 - 5 - project-enigma

2010-10-27-01-文字コードの話 - 5

>> Site top >> weblog >> 月別アーカイブ >> 2010年10月のlog >> 2010-10-27-01-文字コードの話 - 5

最終更新日付:2013/12/31 07:35:54


文字コードの話 - 5

2010 年 10 月 27 日

少し御無沙汰してしまった。まだ書くことはあるのできちんと習慣付けるようにしなければ。今回は、前回の続きを簡単に。

さて、前回は文字列を指すポインタの型、および文字値を格納する型をどうすべきか、という話だった。結論から書いてしまおう。文字列を指すポインタは char*、文字値を格納する型は unsigned int(というか符号なし32ビット整数型)に決めてしまった。これは、char* が(通常は)アドレッシングの最小単位であることと、32ビットあればひとまず既知の文字コードで使用されるコード値を格納できるからだ。

実は、当初はクラス毎にこのポインタ型と文字値格納型は個別に typedef していたのだ。たとえば、以下のように。

namespace Encoding {
    class ASCII {
    public:
        typedef char PointerT;
        typedef char CharValueT;
    //     :
    };
    class SJIS {
    public:
        typedef unsigned char  PointerT;
        typedef unsigned short CharValueT;
    //     :
    };
}

こうすることで、どの型を使ってもその PointerType や CharValueType を使用することができる。この方法をやめたのは、動的解決を導入したからだ。いくら動的解決とはいえ、Encoding::Dynamic という抽象クラスが定める PointerType や CharValueType の型まで可変にはできない。しかし、Encoding::Dynamic を導入した後も、これらの typedef は char と unsigned int に統一するかたちで残留している。

なんだか自分で書いていても歯切れの悪い感じがするが、どうしてなのかは良くわからない‥‥‥次回は現状で実装しているメソッドについて。

 

コメント

このページにコメントする

 

このページのタグ

Page tag : 開発

 

 


Copyright(C) 2005-2017 project-enigma.
Generated by CL-PREFAB.