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 
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 
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 
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__
EUC.
Definition: UniCode.h:87
bool readFile(FILE *fp)
ファイル入力関数
void convert(const std::string &str, fk_StringCode code)
文字列生成関数
void push_back(fk_UniChar c)
後部文字追加関数1
文字列板に表示する文字列を制御するクラス
Definition: UniCode.h:195
void convertEUC(const std::string &str, fk_UniStr *uniStr)
EUCコード変換関数
void setInputCoding(fk_StringCode)
入力文字コード設定関数
void convertJIS(const std::string &str, fk_UniStr *uniStr)
JISコード変換関数
void copyStr(fk_UniStr *str)
文字列コピー関数
fk_UniStr & operator=(const fk_UniStr &)
単純代入演算子
Unicode の文字を表すクラス
Definition: UniCode.h:103
fk_StringCode
日本語文字コードを表す列挙型
Definition: UniCode.h:82
void printf(fk_StringCode code, const char *format,...)
printf 形式書式付き文字列生成関数
void setBuffer(unsigned char c1, unsigned char c2)
文字コード設定関数1
char * sjis(const std::string &str)
Shift-JIS変換関数(入力文字コード省略)
void pop_back(void)
最後尾文字削除関数
bool isAscii(void)
ASCII文字判定関数
char getAscii(void)
ASCII文字取得関数
void markClear(void)
マーク初期化関数
bool fgetLine(FILE *fp, fk_StringCode code=FK_STR_UTF16)
ファイル一行分取得関数
int getCode(int num) const
文字コード参照関数
fk_UniStr(void)
コンストラクタ
char * utf8(const std::string &str)
UTF-8変換関数(入力文字コード省略)
FK の各クラスの基盤となる基本クラス
Definition: Base.h:212
virtual ~fk_UniStr()
デストラクタ
void clear(void)
初期化関数
int getCode(void)
文字コード参照関数
Unicode (UTF-8)
Definition: UniCode.h:84
Shift-JIS (SJISコード)
Definition: UniCode.h:86
bool readFile(const std::string fileName, fk_StringCode code=FK_STR_UTF16)
ファイル全体取得関数
日本語文字コード変換クラス
Definition: UniCode.h:487
fk_UniChar & operator=(const fk_UniChar &)
単純代入演算子
fk_UniChar(int code=0)
コンストラクタ
void convertSJIS(const std::string &str, fk_UniStr *uniStr)
Shift-JISコード変換関数
Unicode (UTF-16)
Definition: UniCode.h:83
void setCode(int code)
文字コード設定関数2
int find(int start, int code)
文字検索関数1
virtual ~fk_StrConverter()
デストラクタ
ISO-2022-JIS (JISコード)
Definition: UniCode.h:85
fk_StrConverter(void)
コンストラクタ
int getLength(void) const
文字列長参照関数
bool getLine(fk_UniStr *str)
一行分取得関数