メインページ | クラス階層 | アルファベット順一覧 | 構成 | Directories | ファイル一覧 | 構成メンバ

ystring.h

説明を見る。
00001 
00011 #ifndef DEFINE_H_YSTRING
00012 #define DEFINE_H_YSTRING
00013 
00014 #include <basic.h>
00015 #include <bstdlib.h>
00016 #include <errcode.h>
00017 #include <tstring.h>
00018 #include <tctype.h>
00019 #include <tcode.h>
00020 #include <wtstring.h>
00021 #include <mtstring.h>
00022 #include <tlang.h>
00023 #include <btron/tf.h>
00024 
00025 struct YStringInstance {
00026   int refcount; // リファレンスカウンタ
00027   TC *tcstr; // 文字列の実体
00028   int len; // 文字列中の文字数
00029   int bufsize; // バッファのサイズ
00030   int datalen; // 実データのサイズ
00031   int lastzone; // 終端位置での文字ゾーン
00032 };
00033 
00042 class YString {
00043 
00044 public:
00046   YString() {
00047     strInstance = NULL;
00048   }
00049   
00051   virtual ~YString() {
00052     freeInstance();
00053   }
00054   
00056   YString(TC chr, int repeat);
00057   
00063   YString(const TC *src) {
00064     strInstance = NULL;
00065     operator=(src);
00066   }
00067   
00074   YString(const YString& src) {
00075     strInstance = NULL;
00076     operator=(src);
00077   }
00078 
00080   // 文字列を代入する
00081   //   [in] - コピー元の文字列(YString型)
00082   const YString& operator=(const YString& src);
00084   // 文字列を代入する
00085   //   [in] - コピー元の文字列(TC*型)
00086   const YString& operator=(const TC* src);
00087 
00089   // TC[]型の文字列データへのアクセスを行う(書き込み禁止)
00090   //   [out] const TC* - TC[]型文字列データへのconstポインタ
00091   operator const TC*() const;
00092   
00094   // 文字列を結合する
00095   //   [in] s1 - 文字列1
00096   //   [in] s2 - 文字列2
00097   //   [out] YString - 結合後の文字列
00098   friend YString concat(const TC* s1, const TC* s2);
00100   // 文字列を結合する
00101   //   [in] s1 - 文字列1
00102   //   [in] s2 - 文字列2
00103   //   [out] YString - 結合後の文字列
00104   friend YString operator+(const YString& s1, const YString& s2);
00106   // 文字列を結合する
00107   //   [in] str - 文字列1
00108   //   [in] tcs - 文字列2
00109   //   [out] YString - 結合後の文字列
00110   friend YString operator+(const YString& str, const TC* tcs);
00112   // 文字列を結合する
00113   //   [in] tcs - 文字列1
00114   //   [in] str - 文字列2
00115   //   [out] YString - 結合後の文字列
00116   friend YString operator+(const TC* tcs, const YString& str);
00118   // 文字列と文字を結合する
00119   //   [in] str - 文字列
00120   //   [in] chr - TC文字
00121   //   [out] YString - 結合後の文字列
00122   friend YString operator+(const YString& str, TC chr);
00124   // 文字と文字列を結合する
00125   //   [in] chr - TC文字
00126   //   [in] str - 文字列
00127   //   [out] YString - 結合後の文字列
00128   friend YString operator+(TC chr, const YString& str);
00129   
00130   // GROUP: 未実装
00131   
00132 
00134   // 左部分の抽出
00135   //   [in] num - 文字数
00136   //   [out] YString - 抽出文字列部分
00137   YString left(int ncount);
00139   // 右部分の抽出
00140   //   [in] num - 文字数
00141   //   [out] YString - 抽出文字列部分
00142   YString right(int ncount);
00144   // 任意部分の抽出
00145   //   [in] st - 抽出開始位置
00146   //   [in] num - 文字数
00147   //   [out] YString - 抽出文字列部分
00148   YString mid(int st, int num);
00150   // 右部分の抽出
00151   //   [in] st - 抽出開始位置
00152   //   [out] YString - 抽出文字列部分
00153   YString mid(int st);
00155   // バッファのサイズを得る
00156   //   [out] W - バッファのサイズ
00157   W getBufferSize() const;
00159   // 文字数を得る
00160   //   [out] W - バッファのサイズ
00161   W countLetter() const {
00162     if (strInstance == NULL) {
00163       return 0;
00164     }
00165     if (strInstance->len < 0){
00166       calcStringInfo();
00167     }
00168     return strInstance->len;
00169   }
00171   // 空にする
00172   void empty();
00174   // 空かどうか調べる
00175   bool isEmpty() const {
00176     return (countLetter() <= 0);
00177   }
00178   
00179 protected:
00180 
00181 private:
00183   // lastzone, lenの計算を行う
00184   void calcStringInfo() const;
00186   // refcountを下げたあと、strInstanceを解放する
00187   void freeInstance();
00189   // refcountが1であることを保証させる
00190   void forceUnique();
00192   // 文字列バッファを確保する
00193   //   [in] size - 文字列領域の最低サイズ(実際は余分に確保する)
00194   YStringInstance* allocNewBuffer(int size);
00196   // 文字列実体へのポインタ
00197   YStringInstance* strInstance;
00198   
00199 };
00200 
00201 #endif // DEFINE_H_YSTRING

YLibに対してMon Mar 21 08:57:44 2005に生成されました。  doxygen 1.4.1