FineKernelToolKit 2.9.0

- メインページ
- ネームスペース
- クラス
- ファイル

- ファイル一覧
- ファイルメンバ

全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義 ページ
UniCode.h
説明を見る。
1 /****************************************************************************
2 *
3 * Copyright (c) 1999-2014, Fine Kernel Project, All rights reserved.
4 *
5 * Redistribution and use in source and binary forms,
6 * with or without modification, are permitted provided that the
7 * following conditions are met:
8 *
9 * - Redistributions of source code must retain the above
10 * copyright notice, this list of conditions and the
11 * following disclaimer.
12 *
13 * - Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the
15 * following disclaimer in the documentation and/or
16 * other materials provided with the distribution.
17 *
18 * - Neither the name of the copyright holders nor the names
19 * of its contributors may be used to endorse or promote
20 * products derived from this software without specific
21 * prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
29 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
32 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
33 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34 * POSSIBILITY OF SUCH DAMAGE.
35 *
36 ****************************************************************************/
37 /****************************************************************************
38 *
39 * Copyright (c) 1999-2014, Fine Kernel Project, All rights reserved.
40 *
41 * 本ソフトウェアおよびソースコードのライセンスは、基本的に
42 * 「修正 BSD ライセンス」に従います。以下にその詳細を記します。
43 *
44 * ソースコード形式かバイナリ形式か、変更するかしないかを問わず、
45 * 以下の条件を満たす場合に限り、再頒布および使用が許可されます。
46 *
47 * - ソースコードを再頒布する場合、上記の著作権表示、本条件一覧、
48 * および下記免責条項を含めること。
49 *
50 * - バイナリ形式で再頒布する場合、頒布物に付属のドキュメント等の
51 * 資料に、上記の著作権表示、本条件一覧、および下記免責条項を
52 * 含めること。
53 *
54 * - 書面による特別の許可なしに、本ソフトウェアから派生した製品の
55 * 宣伝または販売促進に、本ソフトウェアの著作権者の名前または
56 * コントリビューターの名前を使用してはならない。
57 *
58 * 本ソフトウェアは、著作権者およびコントリビューターによって「現
59 * 状のまま」提供されており、明示黙示を問わず、商業的な使用可能性、
60 * および特定の目的に対する適合性に関す暗黙の保証も含め、またそれ
61 * に限定されない、いかなる保証もないものとします。著作権者もコン
62 * トリビューターも、事由のいかんを問わず、損害発生の原因いかんを
63 * 問わず、かつ責任の根拠が契約であるか厳格責任であるか(過失その
64 * 他の)不法行為であるかを問わず、仮にそのような損害が発生する可
65 * 能性を知らされていたとしても、本ソフトウェアの使用によって発生
66 * した(代替品または代用サービスの調達、使用の喪失、データの喪失、
67 * 利益の喪失、業務の中断も含め、またそれに限定されない)直接損害、
68 * 間接損害、偶発的な損害、特別損害、懲罰的損害、または結果損害に
69 * ついて、一切責任を負わないものとします。
70 *
71 ****************************************************************************/
72 #ifndef __FK_UNICODE_HEADER__
73 #define __FK_UNICODE_HEADER__
74
75 #include <vector>
76 #include <FK/Base.h>
77
78 class ImdKanjiCodeConverter;
79 class ImdKcvEncoder;
80
82 enum fk_StringCode {
83 FK_STR_UTF16,
84 FK_STR_UTF8,
85 FK_STR_JIS,
86 FK_STR_SJIS,
87 FK_STR_EUC
88 };
89
91
103 class fk_UniChar : public fk_BaseObject {
104 private:
105 int code;
106
107 public:
109
115 fk_UniChar(int code = 0);
116
118 fk_UniChar(const fk_UniChar &);
119
121 fk_UniChar & operator =(const fk_UniChar &);
122
124
132 bool readFile(FILE *fp);
133
135
141 void setBuffer(unsigned char c1, unsigned char c2);
142
144
149 void setCode(int code);
150
152
157 int getCode(void);
158
160
166 bool isAscii(void);
167
169
177 char getAscii(void);
178 };
179
181
195 class fk_UniStr : public fk_BaseObject {
196 private:
197 std::vector<int> uniStr;
198 int mark;
199
200 bool fgetLine_UTF16(FILE *);
201
202 public:
204 fk_UniStr(void);
205
207 virtual ~fk_UniStr();
208
210 fk_UniStr(const fk_UniStr &);
211
213 fk_UniStr & operator =(const fk_UniStr &);
214
216
219 void clear(void);
220
222
228 int getLength(void) const;
229
231
252 bool getLine(fk_UniStr *str);
253
255
263 void markClear(void);
264
266
291 bool fgetLine(FILE *fp, fk_StringCode code = FK_STR_UTF16);
292
294
309 bool readFile(const std::string fileName,
310 fk_StringCode code = FK_STR_UTF16);
311
313
321 void copyStr(fk_UniStr *str);
322
324
343 void convert(const std::string &str, fk_StringCode code);
344
346
369 void printf(fk_StringCode code, const char *format, ...);
370
372
381 int getCode(int num) const;
382
384
400 int find(int start, int code);
401
403
419 int find(int start, unsigned char c1, unsigned char c2);
420
422
425 void pop_back(void);
426
428
435 void push_back(fk_UniChar c);
436
438
447 void push_back(fk_UniChar *c);
448
450
457 void push_back(int code);
458
459 #ifndef FK_DOXYGEN_USER_PROCESS
460 void Print(std::string = "");
461 #endif
462 };
463
465
487 class fk_StrConverter {
488 private:
489 ImdKanjiCodeConverter *jis_utf8_Base;
490 ImdKanjiCodeConverter *sjis_utf8_Base;
491 ImdKanjiCodeConverter *euc_utf8_Base;
492 ImdKanjiCodeConverter *utf16_utf8_Base;
493
494 ImdKanjiCodeConverter *jis_utf16_Base;
495 ImdKanjiCodeConverter *sjis_utf16_Base;
496 ImdKanjiCodeConverter *euc_utf16_Base;
497 ImdKanjiCodeConverter *utf8_utf16_Base;
498
499 ImdKanjiCodeConverter *jis_sjis_Base;
500 ImdKanjiCodeConverter *euc_sjis_Base;
501 ImdKanjiCodeConverter *utf8_sjis_Base;
502 ImdKanjiCodeConverter *utf16_sjis_Base;
503
504 char *buffer;
505 int bufSize;
506
507 ImdKcvEncoder * MakeEncoder(fk_StringCode);
508 void RemakeBuffer(ImdKanjiCodeConverter *);
509
510 void InitJIS_UTF8_Base(void);
511 void InitSJIS_UTF8_Base(void);
512 void InitEUC_UTF8_Base(void);
513 void InitUTF16_UTF8_Base(void);
514
515 void InitJIS_UTF16_Base(void);
516 void InitSJIS_UTF16_Base(void);
517 void InitEUC_UTF16_Base(void);
518 void InitUTF8_UTF16_Base(void);
519
520 void InitJIS_SJIS_Base(void);
521 void InitEUC_SJIS_Base(void);
522 void InitUTF8_SJIS_Base(void);
523 void InitUTF16_SJIS_Base(void);
524
525 void ConvertJIS_UTF8(const std::string &,
526 std::string *);
527 void ConvertSJIS_UTF8(const std::string &,
528 std::string *);
529 void ConvertEUC_UTF8(const std::string &,
530 std::string *);
531 void ConvertUTF16_UTF8(const std::string &,
532 std::string *);
533
534 void ConvertJIS_SJIS(const std::string &,
535 std::string *);
536 void ConvertEUC_SJIS(const std::string &,
537 std::string *);
538 void ConvertUTF8_SJIS(const std::string &,
539 std::string *);
540 void ConvertUTF16_SJIS(const std::string &,
541 std::string *);
542
543 void CommonConvert(ImdKanjiCodeConverter *,
544 const std::string &, fk_UniStr *);
545
546 public:
548 fk_StrConverter(void);
550 virtual ~fk_StrConverter();
551
553
559 void convertJIS(const std::string &str, fk_UniStr *uniStr);
560
562
568 void convertSJIS(const std::string &str, fk_UniStr *uniStr);
569
571
577 void convertEUC(const std::string &str, fk_UniStr *uniStr);
578
579 #ifndef FK_DOXYGEN_USER_PROCESS
580 void convert_SJIS(const std::string &,
581 std::string *,
582 fk_StringCode);
583
584 void convert_UTF8(const std::string &,
585 std::string *,
586 fk_StringCode);
587 #endif
588
589 };
590
592 namespace fk_Code {
593
595
601 void setInputCoding(fk_StringCode);
602
604
616 char * utf8(const std::string &str);
617
619
628 char * utf8(const std::string &str, fk_StringCode code);
629
631
643 char * sjis(const std::string &str);
644
646
655 char * sjis(const std::string &str, fk_StringCode code);
656 }
657
658 #endif // !__FK_UNICODE_HEADER__
FK_STR_EUC
EUC.
Definition: UniCode.h:87
fk_UniChar::readFile
bool readFile(FILE *fp)
ファイル入力関数
fk_UniStr::convert
void convert(const std::string &str, fk_StringCode code)
文字列生成関数
fk_UniStr::push_back
void push_back(fk_UniChar c)
後部文字追加関数1
fk_UniStr
文字列板に表示する文字列を制御するクラス
Definition: UniCode.h:195
fk_StrConverter::convertEUC
void convertEUC(const std::string &str, fk_UniStr *uniStr)
EUCコード変換関数
fk_Code::setInputCoding
void setInputCoding(fk_StringCode)
入力文字コード設定関数
fk_StrConverter::convertJIS
void convertJIS(const std::string &str, fk_UniStr *uniStr)
JISコード変換関数
fk_UniStr::copyStr
void copyStr(fk_UniStr *str)
文字列コピー関数
fk_UniStr::operator=
fk_UniStr & operator=(const fk_UniStr &)
単純代入演算子
fk_UniChar
Unicode の文字を表すクラス
Definition: UniCode.h:103
fk_StringCode
fk_StringCode
日本語文字コードを表す列挙型
Definition: UniCode.h:82
fk_UniStr::printf
void printf(fk_StringCode code, const char *format,...)
printf 形式書式付き文字列生成関数
fk_UniChar::setBuffer
void setBuffer(unsigned char c1, unsigned char c2)
文字コード設定関数1
fk_Code::sjis
char * sjis(const std::string &str)
Shift-JIS変換関数(入力文字コード省略)
fk_UniStr::pop_back
void pop_back(void)
最後尾文字削除関数
fk_UniChar::isAscii
bool isAscii(void)
ASCII文字判定関数
fk_UniChar::getAscii
char getAscii(void)
ASCII文字取得関数
fk_UniStr::markClear
void markClear(void)
マーク初期化関数
fk_UniStr::fgetLine
bool fgetLine(FILE *fp, fk_StringCode code=FK_STR_UTF16)
ファイル一行分取得関数
fk_UniStr::getCode
int getCode(int num) const
文字コード参照関数
fk_UniStr::fk_UniStr
fk_UniStr(void)
コンストラクタ
fk_Code::utf8
char * utf8(const std::string &str)
UTF-8変換関数(入力文字コード省略)
fk_BaseObject
FK の各クラスの基盤となる基本クラス
Definition: Base.h:212
fk_UniStr::~fk_UniStr
virtual ~fk_UniStr()
デストラクタ
fk_UniStr::clear
void clear(void)
初期化関数
fk_UniChar::getCode
int getCode(void)
文字コード参照関数
FK_STR_UTF8
Unicode (UTF-8)
Definition: UniCode.h:84
FK_STR_SJIS
Shift-JIS (SJISコード)
Definition: UniCode.h:86
fk_UniStr::readFile
bool readFile(const std::string fileName, fk_StringCode code=FK_STR_UTF16)
ファイル全体取得関数
fk_StrConverter
日本語文字コード変換クラス
Definition: UniCode.h:487
fk_UniChar::operator=
fk_UniChar & operator=(const fk_UniChar &)
単純代入演算子
fk_UniChar::fk_UniChar
fk_UniChar(int code=0)
コンストラクタ
fk_StrConverter::convertSJIS
void convertSJIS(const std::string &str, fk_UniStr *uniStr)
Shift-JISコード変換関数
FK_STR_UTF16
Unicode (UTF-16)
Definition: UniCode.h:83
fk_UniChar::setCode
void setCode(int code)
文字コード設定関数2
Base.h
fk_UniStr::find
int find(int start, int code)
文字検索関数1
fk_StrConverter::~fk_StrConverter
virtual ~fk_StrConverter()
デストラクタ
FK_STR_JIS
ISO-2022-JIS (JISコード)
Definition: UniCode.h:85
fk_StrConverter::fk_StrConverter
fk_StrConverter(void)
コンストラクタ
fk_UniStr::getLength
int getLength(void) const
文字列長参照関数
fk_UniStr::getLine
bool getLine(fk_UniStr *str)
一行分取得関数