115 virtual bool Lock(DWORD dwTime = INFINITE)
const
117 return m_data.Lock(dwTime);
135 return m_data.ReferBuffer();
155 virtual const TYP&
At(INDEX index)
const
183 return m_data.Remove(index);
194 return m_data.RemoveAll();
207 if ( i != INVALID_INDEX )
220 bool Has(
const TYP& t)
const
236 return INVALID_INDEX;
238 size_t sz =
m_data.GetSize();
241 return INVALID_INDEX;
254 else if ( t <
m_data[f + x] )
264 return INVALID_INDEX;
275 INDEX r = m_Insert(t);
277 if ( r != INVALID_INDEX )
281 ASSERT( ! (t <
At(r - 1)) );
285 ASSERT( ! (
At(r + 1) < t) );
315 if (
Insert(t.
At(i)) == INVALID_INDEX )
338 if (
Insert(*P) == INVALID_INDEX )
369 INDEX m_Insert(
const TYP& t)
375 size_t sz =
m_data.GetSize();
396 else if ( t <
m_data[f + x] )
415 friend class CSetTest;
438template<
typename TYP>
449 INDEX Insert(
const TYP& v)
451 loop ( i, m_data.GetSize() )
453 if ( v < m_data[i] || ! (m_data[i] < v) )
461 return m_data.GetSize() - 1;
471 bool Delete(
const TYP& t)
473 TRange r = GetEqualRange(t);
474 if ( r.lower != INVALID_INDEX )
476 m_data.RemoveElement(r.lower, (r.upper - r.lower) + 1);
494 TRange GetEqualRange(
const TYP& v)
const
496 TRange r = { INVALID_INDEX, INVALID_INDEX };
497 size_t sz = m_data.GetSize();
498 for ( INDEX i = 0; i < sz; i++ )
500 if ( m_IsEqual(v, m_data[i]) )
505 for ( ; i < sz; i++ )
507 if ( v < m_data[i] || m_data[i] < v )
525 bool m_IsEqual(
const TYP& t1,
const TYP& t2)
const
527 return ! (t1 < t2) && ! (t2 < t1);
#define loop(VAR, CNT)
loop構文.
bool Insert(const IConstCollectionT< TYP > &t)
[検索] 指定要素挿入.
virtual size_t GetSize(void) const
[取得] 要素数取得.
virtual INDEX OnFoundEqual(INDEX index)
[通知] 同じ値発見通知.
CSingleSetT(size_t size=0)
コンストラクタ
bool Has(const TYP &t) const
[確認] 値あるか?
bool Delete(const TYP &t)
[削除] 指定要素の削除.
bool Remove(INDEX index)
[削除] 要素一つ削除.
CVectorT< TYP > m_data
データ
INDEX GetEqualIndex(const TYP &t) const
[検索] 指定要素の検索.
virtual const TYP & At(INDEX index) const
[取得] 要素の参照取得.
virtual bool Lock(DWORD dwTime=INFINITE) const
[排他] ロック
const TYP & operator[](INDEX index) const
[取得] 要素の参照取得.
virtual bool RemoveAll(void)
[削除] 空化
virtual const TYP * ReferBuffer(void) const
[取得] データアドレス取得.
CSingleSetT & operator=(const CSingleSetT &other)
[代入] 代入
virtual void Unlock(void) const
[排他] アンロック
INDEX Insert(const TYP &t)
[検索] 指定要素挿入.
size_t InsertElements(size_t size, const TYP *P)
[検索] 指定要素挿入.
CSingleSetT(const CSingleSetT< TYP > &other)
コピーコンストラクタ
INDEX InsertEx(const TYP &t)
[検索] 指定要素挿入.
#define EXCLUSIVE(CLS)
簡易排他制御マクロ.
bool IsEmpty(void) const
[確認] 要素の有無確認.
virtual const TYP & At(INDEX index) const =0
[取得] 要素の参照取得.
virtual size_t GetSize(void) const =0
[取得] 要素数取得.
連続メモリ配置型情報群管理インターフェーステンプレート