クラス テンプレート shttl::setassoc_table_set_vector< line_type, strage_type >

#include <setassoc_table.h>

shttl::setassoc_table_set_vector< line_type, strage_type >のコラボレーション図

Collaboration graph
[凡例]
すべてのメンバ一覧

Public 型

typedef strage_type::size_type size_type
typedef line_type::tag_type tag_type
typedef line_type::value_type value_type

Public メソッド

const line_type & at (size_type way) const
line_type & at (size_type way)
void clear ()
size_type find (const tag_type tag) const
size_type find_free_way () const
void invalidate (const size_type way)
bool read (size_type way, line_type *line) const
 setassoc_table_set_vector (strage_type *lines, size_type way_num, size_type offset)
void write (const size_type way, const tag_type tag, const value_type &val=value_type())

Static Public 変数

static const size_type invalid_index = strage_type::invalid_index
static const size_type invalid_way = strage_type::invalid_way

Protected メソッド

void assert_valid_way (size_type way) const

Protected 変数

size_type m_offset
strage_type * m_strage
size_type m_way_num

説明

template<typename line_type, typename strage_type>
class shttl::setassoc_table_set_vector< line_type, strage_type >

setassoc_table.h254 行で定義されています。


型定義

template<typename line_type, typename strage_type>
typedef strage_type::size_type shttl::setassoc_table_set_vector< line_type, strage_type >::size_type

setassoc_table.h259 行で定義されています。

template<typename line_type, typename strage_type>
typedef line_type::tag_type shttl::setassoc_table_set_vector< line_type, strage_type >::tag_type

setassoc_table.h260 行で定義されています。

template<typename line_type, typename strage_type>
typedef line_type::value_type shttl::setassoc_table_set_vector< line_type, strage_type >::value_type

setassoc_table.h261 行で定義されています。


コンストラクタとデストラクタ

template<typename line_type, typename strage_type>
shttl::setassoc_table_set_vector< line_type, strage_type >::setassoc_table_set_vector ( strage_type *  lines,
size_type  way_num,
size_type  offset 
) [inline]

setassoc_table.h266 行で定義されています。

00270           :
00271             m_strage ( lines ),
00272             m_way_num( way_num ),
00273             m_offset ( offset )
00274         {
00275         }


関数

template<typename line_type, typename strage_type>
void shttl::setassoc_table_set_vector< line_type, strage_type >::assert_valid_way ( size_type  way  )  const [inline, protected]

setassoc_table.h363 行で定義されています。

参照先 SHTTL_ASSERT.

00364         {
00365             SHTTL_ASSERT( 0 <= way && way < m_way_num );
00366         }

template<typename line_type, typename strage_type>
const line_type& shttl::setassoc_table_set_vector< line_type, strage_type >::at ( size_type  way  )  const [inline]

setassoc_table.h352 行で定義されています。

00353         {
00354             return m_strage->at( way + m_offset );
00355         }

template<typename line_type, typename strage_type>
line_type& shttl::setassoc_table_set_vector< line_type, strage_type >::at ( size_type  way  )  [inline]

setassoc_table.h347 行で定義されています。

参照元 shttl::setassoc_table_set_vector< line_type, strage_type >::find().

00348         {
00349             return m_strage->at( way + m_offset );
00350         }

Here is the caller graph for this function:

template<typename line_type, typename strage_type>
void shttl::setassoc_table_set_vector< line_type, strage_type >::clear (  )  [inline]

setassoc_table.h340 行で定義されています。

00341         {
00342             for( size_type w = 0; w < m_way_num; w++ ){
00343                 at( w ).valid = false;
00344             }
00345         }

template<typename line_type, typename strage_type>
size_type shttl::setassoc_table_set_vector< line_type, strage_type >::find ( const tag_type  tag  )  const [inline]

setassoc_table.h278 行で定義されています。

参照先 shttl::setassoc_table_set_vector< line_type, strage_type >::at()shttl::setassoc_table_set_vector< line_type, strage_type >::m_way_num.

00279         {
00280             for( size_type w = 0; w < m_way_num; w++ ){
00281                 const line_type& line = at( w );
00282                 if( line.tag == tag && line.valid ){
00283                     return w;
00284                 }
00285             }
00286             return invalid_way;
00287         }

関数の呼び出しグラフ:

template<typename line_type, typename strage_type>
size_type shttl::setassoc_table_set_vector< line_type, strage_type >::find_free_way (  )  const [inline]

setassoc_table.h290 行で定義されています。

00291         {
00292             for( size_type w = 0; w < m_way_num; w++ ){
00293                 if( !at( w ).valid )
00294                     return w;
00295             }
00296             return invalid_way;
00297         }

template<typename line_type, typename strage_type>
void shttl::setassoc_table_set_vector< line_type, strage_type >::invalidate ( const size_type  way  )  [inline]

setassoc_table.h300 行で定義されています。

00301         {
00302             if( way == invalid_way )
00303                 return;
00304 
00305             assert_valid_way( way );
00306             at( way ).valid = false;
00307         }

template<typename line_type, typename strage_type>
bool shttl::setassoc_table_set_vector< line_type, strage_type >::read ( size_type  way,
line_type *  line 
) const [inline]

setassoc_table.h310 行で定義されています。

00311         {
00312             if( way == invalid_way )
00313                 return false;
00314 
00315             assert_valid_way( way );
00316             if( line ){
00317                 *line = at( way );
00318             }
00319             return at( way ).valid;
00320         }

template<typename line_type, typename strage_type>
void shttl::setassoc_table_set_vector< line_type, strage_type >::write ( const size_type  way,
const tag_type  tag,
const value_type val = value_type() 
) [inline]

setassoc_table.h322 行で定義されています。

参照先 SHTTL_ASSERT.

00326          {
00327             if(way == invalid_way)
00328                 return;
00329 
00330             assert_valid_way(way);
00331 
00332             // keydH
00333             SHTTL_ASSERT( find(tag) == invalid_way || find( tag ) == way );
00334 
00335             // 
00336             at( way ) = line_type( tag, val, true );
00337         }


変数

template<typename line_type, typename strage_type>
const size_type shttl::setassoc_table_set_vector< line_type, strage_type >::invalid_index = strage_type::invalid_index [static]

setassoc_table.h263 行で定義されています。

template<typename line_type, typename strage_type>
const size_type shttl::setassoc_table_set_vector< line_type, strage_type >::invalid_way = strage_type::invalid_way [static]

setassoc_table.h264 行で定義されています。

template<typename line_type, typename strage_type>
size_type shttl::setassoc_table_set_vector< line_type, strage_type >::m_offset [protected]

setassoc_table.h361 行で定義されています。

template<typename line_type, typename strage_type>
strage_type* shttl::setassoc_table_set_vector< line_type, strage_type >::m_strage [protected]

setassoc_table.h359 行で定義されています。

template<typename line_type, typename strage_type>
size_type shttl::setassoc_table_set_vector< line_type, strage_type >::m_way_num [protected]

setassoc_table.h360 行で定義されています。

参照元 shttl::setassoc_table_set_vector< line_type, strage_type >::find().


このクラスの説明は次のファイルから生成されました:
Onikiri2に対してTue Jun 18 15:35:49 2013に生成されました。  doxygen 1.4.7