7 #ifndef __MUN_INDEX_MANAGER_HPP__ 8 #define __MUN_INDEX_MANAGER_HPP__ 17 template<
typename IndexKeyType,
typename IndexType,
typename IndexValueType >
49 m_GenerateIndexKey = 1;
63 m_IndexManager.clear();
64 m_IndexSearchMap.clear();
65 m_IndexKeySearchMap.clear();
83 if( indexMax == m_GenerateIndex ) {
88 if( m_IndexKeySearchMap.end() == m_IndexKeySearchMap.find(index) )
return index;
89 }
while( startIndex != index );
101 IndexKeyType indexKey = 0;
106 m_GenerateIndexKey++;
109 if( indexKeyMax == m_GenerateIndexKey ) {
110 m_GenerateIndexKey = 1;
114 if( m_IndexSearchMap.end() == m_IndexSearchMap.find(indexKey) )
return indexKey;
115 }
while( startIndexKey != indexKey );
126 typename std::map< IndexKeyType, IndexType >::iterator itr = m_IndexSearchMap.find( indexKey );
127 return ( m_IndexSearchMap.end() == itr ) ? 0 : itr->second;
136 typename std::map< IndexType, IndexValueType >::iterator itr = m_IndexManager.find( index );
137 return ( m_IndexManager.end() == itr ) ? NULL : &(itr->second);
146 typename std::map< IndexType, IndexKeyType >::iterator itr = m_IndexKeySearchMap.find( index );
147 return ( m_IndexKeySearchMap.end() == itr ) ? NULL : &(itr->second);
158 bool Create( IndexType& index, IndexType indexMax, IndexKeyType indexKey, IndexValueType indexValue ) {
161 if( 0 < _index )
return false;
165 if( 0 == _index )
return false;
168 m_IndexManager.insert( std::pair<IndexType, IndexValueType>( _index, indexValue ) );
169 m_IndexSearchMap.insert( std::pair<IndexKeyType, IndexType>( indexKey, _index ) );
170 m_IndexKeySearchMap.insert( std::pair<IndexType, IndexKeyType>( _index, indexKey ) );
185 if( pValue == NULL )
return;
188 m_IndexSearchMap.erase( m_IndexKeySearchMap[index] );
189 m_IndexManager.erase( index );
190 m_IndexKeySearchMap.erase( index );
200 for(
typename std::map<IndexType, IndexValueType>::iterator itr = m_IndexManager.begin(); m_IndexManager.end() != itr; ++itr ) {
201 values.push_back( itr->second );
210 return m_IndexManager.size();
IndexType m_GenerateIndex
自動生成インデックスの種.
Definition: MunIndexManager.hpp:31
virtual ~IndexManager()
デストラクタ.
Definition: MunIndexManager.hpp:55
void Delete(IndexType index)
インデックスマネージャからデータを削除する.
Definition: MunIndexManager.hpp:182
void Clear()
インデックスマネージャのクリア.
Definition: MunIndexManager.hpp:62
IndexManager()
コンストラクタ.
Definition: MunIndexManager.hpp:47
IndexValueType * GetValueFromIndex(IndexType index)
インデックスから、値情報を取得する.
Definition: MunIndexManager.hpp:135
IndexType GenerateIndex(IndexType indexMax)
インデックスの自動生成.
Definition: MunIndexManager.hpp:73
IndexType GetIndexFromKey(IndexKeyType indexKey)
インデックスキーから、インデックスを取得する.
Definition: MunIndexManager.hpp:125
インデックス管理.
Definition: MunIndexManager.hpp:18
std::map< IndexKeyType, IndexType > m_IndexSearchMap
インデックスサーチマップ.
Definition: MunIndexManager.hpp:25
std::map< IndexType, IndexKeyType > m_IndexKeySearchMap
インデックスキーサーチマップ.
Definition: MunIndexManager.hpp:28
std::map< IndexType, IndexValueType > * GetIndexManager()
インデックスマネージャの取得.
Definition: MunIndexManager.hpp:41
void GetValues(std::vector< IndexValueType > &values)
登録されているインデックス値情報を取得する.
Definition: MunIndexManager.hpp:197
bool Create(IndexType &index, IndexType indexMax, IndexKeyType indexKey, IndexValueType indexValue)
インデックスマネージャにデータを生成・追加する.
Definition: MunIndexManager.hpp:158
uint32 GetSize()
インデックスの登録数を取得する.
Definition: MunIndexManager.hpp:209
std::map< IndexType, IndexValueType > m_IndexManager
インデックスマネージャ.
Definition: MunIndexManager.hpp:22
IndexKeyType m_GenerateIndexKey
自動生成インデックスキーの種.
Definition: MunIndexManager.hpp:34
const IndexKeyType * GetIndexKey(IndexType index)
インデックスから、インデックスキーを取得する.
Definition: MunIndexManager.hpp:145
IndexKeyType GenerateIndexKey(IndexKeyType indexKeyMax)
インデックスキーの自動生成.
Definition: MunIndexManager.hpp:99