TNB Library
TnbAttributedStr.h
[詳解]
1#pragma once
11#include "TnbStr.h"
12#include "TnbVector.h"
13
14
15
16//T-TestCaseコードカバレッジDisable
17#pragma comment(user,"T-Coverage Disable")
18
19
20
21//TNB Library
22namespace TNB
23{
24
25
26
43template<typename TYP>
45{
46 CStr m_str;
47 CVectorT<TYP> m_vattr;
48
49public:
50
56 explicit CAttributedStrT(LPCTSTR lpsz = NULL) : m_str(lpsz)
57 {
58 m_vattr.SetSize(m_str.GetLength());
59 }
60
65 CAttributedStrT(const CAttributedStrT& as) : m_str(as.m_str), m_vattr(as.m_vattr)
66 {
67 ASSERTLIB(m_vattr.GetSize() == m_str.GetLength());
68 }
69
76 {
77 m_str = other.m_str;
78 m_vattr = other.m_vattr;
79 return *this;
80 }
81
89 {
90 m_str = lpsz;
91 m_vattr.RemoveAll();
92 m_vattr.SetSize(m_str.GetLength());
93 return *this;
94 }
95
97 void Empty(void)
98 {
99 m_str.Empty();
100 m_vattr.RemoveAll();
101 }
102
107 LPCTSTR Refer(void) const
108 {
109 return m_str;
110 }
111
118 {
119 m_str += as.m_str;
120 m_vattr += as.m_vattr;
121 ASSERTLIB(m_vattr.GetSize() == static_cast<size_t>(m_str.GetLength()));
122 return *this;
123 }
124
132 {
133 m_str += lpsz;
134 m_vattr.SetSize(m_str.GetLength());
135 ASSERTLIB(m_vattr.GetSize() == m_str.GetLength());
136 return *this;
137 }
138
145 CAttributedStrT& AddAt(TCHAR c, TYP t)
146 {
147 m_str += c;
148 m_vattr.Add(t);
149 ASSERTLIB(m_vattr.GetSize() == m_str.GetLength());
150 return *this;
151 }
152
159 void SetAt(INDEX index, TCHAR c, TYP t)
160 {
161 m_str.SetAt(index, c);
162 m_vattr.Set(index, t);
163 }
164
171 void InsertAt(INDEX index, TCHAR c, TYP t)
172 {
173 m_str.InsertAt(index, c);
174 m_vattr.Insert(index, t);
175 }
176
183 void Insert(INDEX index, LPCTSTR lpsz, TYP t=TYP())
184 {
185 m_str.Insert(index, lpsz);
186 loop ( i, STRLIB::GetLen(lpsz) )
187 {
188 m_vattr.Insert(index, t);
189 }
190 }
191
197 void Insert(INDEX index, const CAttributedStrT& as)
198 {
199 m_str.Insert(index, as.m_str);
200 loop ( i, as.m_vattr.GetSize() )
201 {
202 m_vattr.Insert(index + i, as.m_vattr[i]);
203 }
204 }
205
214 int Delete(INDEX index, int iLen = 1)
215 {
216 int l = m_str.Delete(index, iLen);
217 loop ( i, l )
218 {
219 m_vattr.Remove(index);
220 }
221 return l;
222 }
223
229 TCHAR GetAt(INDEX index) const
230 {
231 return m_str.GetAt(index);
232 }
233
239 TYP GetAttribute(INDEX index) const
240 {
241 return m_vattr.Get(index);
242 }
243
249 void SetAttribute(INDEX index, TYP t)
250 {
251 m_vattr.Set(index, t);
252 }
253
258 size_t GetLength(void) const
259 {
260 return m_str.GetLength();
261 }
262
268 bool IsEmpty(void) const
269 {
270 return m_str.IsEmpty();
271 }
272
280 int Find(LPCTSTR lpsz, INDEX iFromIndex = 0) const
281 {
282 return m_str.Find(lpsz, iFromIndex);
283 }
284
292 int Find(TCHAR c, INDEX iFromIndex = 0) const
293 {
294 return m_str.Find(c, iFromIndex);
295 }
296
304 int FindAttribute(TYP t, INDEX iFromIndex = 0) const
305 {
306 return m_vattr.Find(c, iFromIndex);
307 }
308};
309
310
311
312}; // TNB
313
314
315
316//T-TestCaseコードカバレッジEnable
317#pragma comment(user,"T-Coverage Enable")
318
#define loop(VAR, CNT)
loop構文.
Definition: TnbDef.h:343
文字列管理関係のヘッダ
配列型情報管理関係のヘッダ
属性付き文字列管理
void SetAttribute(INDEX index, TYP t)
[設定] 属性設定
void SetAt(INDEX index, TCHAR c, TYP t)
[操作] 一文字置き換え
int Find(TCHAR c, INDEX iFromIndex=0) const
[確認] 検索
CAttributedStrT & operator+=(LPCTSTR lpsz)
[追加] 加算代入オペレータ
bool IsEmpty(void) const
[確認] 空チェック
void InsertAt(INDEX index, TCHAR c, TYP t)
[挿入] 文字挿入
LPCTSTR Refer(void) const
[取得] 参照
size_t GetLength(void) const
[取得] 文字列長
CAttributedStrT & AddAt(TCHAR c, TYP t)
[操作] 一文字追加
TYP GetAttribute(INDEX index) const
[取得] 属性取得
CAttributedStrT(const CAttributedStrT &as)
コピーコンストラクタ
int Delete(INDEX index, int iLen=1)
[操作] 文字削除.
CAttributedStrT(LPCTSTR lpsz=NULL)
コンストラクタ
int Find(LPCTSTR lpsz, INDEX iFromIndex=0) const
[確認] 検索
void Insert(INDEX index, LPCTSTR lpsz, TYP t=TYP())
[挿入] 文字列挿入
CAttributedStrT & operator+=(const CAttributedStrT &as)
[追加] 加算代入オペレータ
TCHAR GetAt(INDEX index) const
[取得] 一文字取得
CAttributedStrT & operator=(const CAttributedStrT &other)
[代入] コピーオペレータ
int FindAttribute(TYP t, INDEX iFromIndex=0) const
[確認] 属性検索
void Insert(INDEX index, const CAttributedStrT &as)
[挿入] 文字列挿入
void Empty(void)
[削除] 空化
CAttributedStrT & operator=(LPCTSTR lpsz)
[代入] 代入
void InsertAt(INDEX index, TYP c)
[挿入] 文字挿入
Definition: TnbStr.h:438
bool IsEmpty(void) const
[確認] 空チェック
Definition: TnbStr.h:528
void Insert(INDEX index, const TYP *lpText)
[挿入] 文字列挿入
Definition: TnbStr.h:406
size_t GetLength(void) const
[取得] 文字列長
Definition: TnbStr.h:518
int Delete(INDEX index, size_t iLen=1)
[操作] 文字削除.
Definition: TnbStr.h:452
INT_PTR Find(TYP t, INDEX iFromIndex=0) const
[確認] 検索.
Definition: TnbStr.h:540
TYP GetAt(INDEX index) const
[取得] 一文字取得
Definition: TnbStr.h:504
void SetAt(INDEX index, TYP t)
[操作] 一文字置き換え
Definition: TnbStr.h:390
void Empty(void)
[削除] 空化
Definition: TnbStr.h:197
配列型情報管理テンプレート
Definition: TnbVector.h:75
virtual size_t GetSize(void) const
[取得] サイズ取得
Definition: TnbVector.h:368
virtual bool Insert(INDEX index, const TYP &t)
[追加] 要素一つ挿入
Definition: TnbVector.h:579
virtual TYP Get(INDEX index) const
[取得] 要素の取得.
Definition: TnbVector.h:220
virtual bool Remove(INDEX index)
[削除] 要素一つ削除.
Definition: TnbVector.h:397
virtual bool SetSize(size_t size)
[操作] サイズ指定
Definition: TnbVector.h:618
virtual bool RemoveAll(void)
[削除] 空化
Definition: TnbVector.h:565
virtual INDEX Add(const TYP &t)
[追加] 要素一つ追加.
Definition: TnbVector.h:383
virtual bool Set(INDEX index, const TYP &t)
[設定] 要素の設定.
Definition: TnbVector.h:265
size_t GetLen(LPCSTR lpsz)
[計算] 文字列長計算(ASCII/SJIS用)
Definition: TnbStrLib.h:44
TNB Library
Definition: TnbDoxyTitle.txt:2
INDEX Find(const IChecker &checker, INDEX startIndex=0, bool boIsReverse=false) const
[検索] 条件一致要素の検索.