メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2008年1月21日月曜日

[mod_chxj][携帯] 絵文字定義構造体の再設計(1)

現状は以下な感じ。


typedef struct imode_emoji_t imode_emoji_t;

struct imode_emoji_t {
char hex1byte;
char hex2byte;
char *string;
char *description;
};

typedef struct ezweb_emoji_t ezweb_emoji_t;

struct ezweb_emoji_t {
char *typeA;
char *typeB;
char *typeC;
char *typeD;
};

typedef struct jphone_emoji_t jphone_emoji_t;

struct jphone_emoji_t {
char *string;
};

typedef struct emoji_t emoji_t;

struct emoji_t {
struct emoji_t *next;
int no;
imode_emoji_t *imode;
ezweb_emoji_t *ezweb;
jphone_emoji_t *jphone;
};



で、imode_tはSJIS、EUC-JP、UTF-8に対応したいので、それぞれの文字コードを記憶しておくために、SJIS用データ、EUC-JP用データ、UTF-8用データ記憶領域を追加。
typedef struct imode_emoji_t {
char *sjis_hex_string;
char *sjis_dec_string;
char sjis_hex[2];

char *euc_hex_string;
char *euc_dec_string;
char euc_hex[3];

char *utf8_hex_string;
char *utf8_dec_string;
char utf8_hex[2];

char *description;
} imode_emoji_t;
後に比較しやすいように文字列でも持っておく。

EzWeb用は、SJISとUTF-8用記憶領域があればよいので、

typedef struct ezweb_type_t {
char *sjis_hex_string;
char *sjis_dec_string;
char sjis_hex[2];

char *utf8_hex_string;
char *utf8_dec_string;
char utf8_hex[2];
} ezweb_type_t;

typedef struct ezweb_emoji_t {
ezweb_type_t typeA;
ezweb_type_t typeB;
ezweb_type_t typeC;
ezweb_type_t typeD;
} ezweb_emoji_t;



といった感じかな。
SoftBankも同様にSJISとUTF8を保持するので、

typedef struct softbank_emoji_t {
char *sjis_hex_string;
char *sjis_dec_string;
char sjis_hex[6];

char *utf8_hex_string;
char *utf8_dec_string;
char utf8_hex[2];
} softbank_emoji_t;


といった感じ。この機会にjphoneはsoftbankに変えとこう。
で、何か似た感じなので共通化して、念のためにそれぞれの絵文字番号も入れて最終的には以下の感じ。


typedef struct emoji_data_t {
char *hex_string;
char *dec_string;
char hex[6];
} emoji_data_t;

typedef struct imode_emoji_t {
emoji_data_t sjis;
emoji_data_t euc;
emoji_data_t utf8;
char *description;
} imode_emoji_t;

typedef struct ezweb_type_t {
int no;
emoji_data_t sjis;
emoji_data_t utf8;
} ezweb_type_t;

typedef struct ezweb_emoji_t {
ezweb_type_t typeA;
ezweb_type_t typeB;
ezweb_type_t typeC;
ezweb_type_t typeD;
} ezweb_emoji_t;

typedef struct softbank_emoji_t {
int no;
emoji_data_t sjis;
emoji_data_t utf8;
} softbank_emoji_t;

typedef struct emoji_t {
struct emoji_t *next;
int no;
imode_emoji_t imode;
ezweb_emoji_t ezweb;
softbank_emoji_t softbank;
} emoji_t;


で完成。

0 コメント: