CTR-Pia  5.4.3
Game Communication Engine
 全て クラス ネームスペース 関数 変数 型定義 列挙型 列挙型の値 ページ
common_String.h
1 /*--------------------------------------------------------------------------------*
2  Copyright (C)Nintendo All rights reserved.
3 
4  These coded instructions, statements, and computer programs contain proprietary
5  information of Nintendo and/or its licensed developers and are protected by
6  national and international copyright laws. They may not be disclosed to third
7  parties or copied or duplicated in any form, in whole or in part, without the
8  prior written consent of Nintendo.
9 
10  The content herein is highly confidential and should be handled accordingly.
11  *--------------------------------------------------------------------------------*/
12 
13 
14 #pragma once
15 
16 #include <nn/pia/common/common_Definitions.h>
17 
18 
19 namespace nn
20 {
21 namespace pia
22 {
23 namespace common
24 {
25 /*!
26  @brief 文字列を表すクラスです。
27 
28  */
30 {
31 public:
32  /*!
33  @brief 文字コードの種類を表します。
34  */
36  {
37  EncodingType_Unknown = 0, //!< 不明な文字コードです
38  EncodingType_Utf8, //!< UTF-8
39  EncodingType_Utf16 //!< UTF-16
40  };
41 
42  /*!
43  @brief デフォルトコンストラクタです。
44  */
46  : m_pBuffer(NULL), m_BufferSize(0), m_Bytes(0), m_EncodingType(EncodingType_Unknown)
47  {
48  }
49 
50  /*!
51  @brief デストラクタです。
52  */
53  virtual ~String()
54  {
55  }
56 
57  /*!
58  @brief UTF-8 の文字列から構築するコンストラクタです。
59 
60  @param[in] pStr 文字列のポインタです。
61  */
62  String(const char* pStr);
63 
64  /*!
65  @brief UTF-16 の文字列から構築するコンストラクタです。
66 
67  @param[in] pStr 文字列のポインタです。
68  */
69  String(const charUtf16_t* pStr);
70 
71  /*!
72  @brief 文字列バッファのポインタを char 型で取得します。
73 
74  @return 文字列バッファのポインタ。
75  */
76  const char* GetCharArray() const;
77 
78  /*!
79  @brief 等値演算子です。二つの String が同等と見なせるかどうかを判定します。
80 
81  @param[in] rhs 比較する文字列です。
82 
83  @return 両者の内容が同等であれば true を、そうでなければ false を返します。
84  */
85  bool operator==(const String& rhs) const;
86 
87 
88  /*!
89  @brief 等値演算子です。二つの String が異なるかどうかを判定します。
90 
91  @param[in] rhs 比較する文字列です。
92 
93  @return 両者の内容が異なれば true を、そうでなければ false を返します。
94  */
95  bool operator!=(const String& rhs) const
96  {
97  return !(*this == rhs);
98  }
99 
100  /*!
101  @brief 書式に従って文字列を構築します。
102 
103  @param[in] pFormatString フォーマット文字列です。
104  @param[in] varg 可変引数リストです。
105 
106  @return 書き込み後の文字列の長さです。
107  */
108  int32_t FormatV(const char* pFormatString, va_list varg);
109 
110 
111  /*!
112  @brief 書式に従って文字列を構築します。
113 
114  @param[in] pFormatString フォーマット文字列です。
115  @param[in] ... 可変引数です。
116 
117  @return 書き込み後の文字列の長さです。
118  */
119  int32_t Format(const char* pFormatString, ...);
120 
121  /*!
122  @brief 文字列の長さを取得します。
123 
124  @return 文字列の長さを返します。
125  */
126  uint32_t GetStringLength() const;
127 
128  /*!
129  @brief 文字列バッファのポインタを取得します。
130 
131  @return 文字列バッファのポインタ。
132  */
133  const void* GetBuffer() const;
134 
135  /*!
136  @brief 文字列のバイト長を取得します。
137 
138  @return 文字列のバイト長を返します。
139  */
140  uint32_t GetBytes() const;
141 
142  /*!
143  @brief 文字列の文字コードを取得します。
144 
145  @return 文字列の文字コードを返します。
146  */
148 
149  /*!
150  @brief 文字列をコピーします。
151 
152  @param[in] rhs コピーする String です。
153 
154  @return 成功すれば、IsSuccess() が true を返す Result が返ります。
155  @retval ResultInvalidArgument 引数が誤っています。コピー先の文字列バッファが不足している、コピー元の文字列が長すぎる、ヌル文字列をコピーしようとした、文字コードが不正などの場合に、このエラーが返ります。
156  */
157  virtual Result Copy(const String& rhs);
158 
159  /*!
160  @brief 文字列をクリアします。
161  */
162  virtual void Clear();
163 
164  /*!
165  @brief デバッグに有用な情報をプリントします。
166 
167  @param[in] flag トレースフラグの論理和。詳細は @ref TraceFlag 型を参照してください。
168  */
169  virtual void Trace(uint64_t flag) const;
170 
171 protected:
172  virtual Result SetString(const void* pStr, uint32_t byteSize, EncodingType type);
173  uint32_t CalcBytes(const void* pStr, EncodingType type);
174  bool IsSameString(const String& rhs) const;
175 
176  const void* m_pBuffer;
177  uint32_t m_BufferSize;
178  uint32_t m_Bytes;
179  EncodingType m_EncodingType;
180 
181 private:
182  NN_PIA_DISALLOW_COPY(String);
183 };
184 }
185 }
186 } // end of namespace nn::pia::common