クラス Onikiri::OpList

#include <OpList.h>

Onikiri::OpListに対する継承グラフ

Inheritance graph
[凡例]
Onikiri::OpListのコラボレーション図

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

Public 型

typedef pool_list< OpIterator
>::const_iterator 
const_iterator
typedef pool_list< OpIterator
>::iterator 
iterator
typedef pool_list< OpIteratorlist_type

Public メソッド

const OpIteratorback () const
OpIteratorback ()
const_iterator begin () const
iterator begin ()
void clear ()
size_t count (const OpIterator &op) const
bool empty () const
const_iterator end () const
iterator end ()
iterator erase (iterator pos)
iterator erase (const OpIterator &opIterator)
iterator find (const OpIterator &opIterator)
bool find_and_erase (OpIterator op)
const OpIteratorfront () const
OpIteratorfront ()
iterator get_iterator (const OpIterator &opIterator) const
iterator get_original_iterator (const OpIterator &opIterator) const
iterator insert (iterator pos, const OpIterator &opIterator)
void move (OpList *from)
iterator operator[] (const OpIterator &opIterator) const
 OpList (const OpArray &opArray)
 OpList ()
void pop_back ()
void pop_front ()
void push_back (const OpIterator &opIterator)
void push_front (const OpIterator &opIterator)
void push_inorder (OpIterator op)
void resize (int capacity)
void resize (const OpArray &opArray)
size_t size () const
template<class SortCmpT>
void sort (SortCmpT cmp)
virtual ~OpList ()

Protected 変数

boost::dynamic_bitset alive_table
std::vector< iteratoriterator_table

説明

OpList.h40 行で定義されています。


型定義

typedef pool_list<OpIterator>::const_iterator Onikiri::OpList::const_iterator

OpList.h46 行で定義されています。

typedef pool_list<OpIterator>::iterator Onikiri::OpList::iterator

Onikiri::OpBufferで再定義されています。

OpList.h45 行で定義されています。

typedef pool_list<OpIterator> Onikiri::OpList::list_type

OpList.h44 行で定義されています。


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

OpList::OpList (  ) 

OpList.cpp38 行で定義されています。

00039 {
00040 }

OpList::OpList ( const OpArray opArray  ) 

OpList.cpp42 行で定義されています。

参照先 resize().

00043 {
00044     resize( opArray );
00045 }

関数の呼び出しグラフ:

OpList::~OpList (  )  [virtual]

OpList.cpp58 行で定義されています。

00059 {
00060 }


関数

const OpIterator& Onikiri::OpList::back (  )  const [inline]

OpList.h112 行で定義されています。

00113         {
00114             return list_type::back();
00115         }

OpIterator& Onikiri::OpList::back (  )  [inline]

OpList.h102 行で定義されています。

参照元 Onikiri::InorderList::GetBackOp()Onikiri::InorderList::GetNextIndexOp().

00103         {
00104             return list_type::back();
00105         }

Here is the caller graph for this function:

const_iterator Onikiri::OpList::begin (  )  const [inline]

OpList.h82 行で定義されています。

00083         {
00084             return list_type::begin();
00085         }

iterator Onikiri::OpList::begin (  )  [inline]

Onikiri::OpBufferで再定義されています。

OpList.h77 行で定義されています。

参照元 Onikiri::OpBuffer::begin()Onikiri::InorderIssueSelector::EvaluateSelect()Onikiri::AgeIssueSelector::EvaluateSelect()Onikiri::MemOrderManager::GetConsumerLoad()Onikiri::MemOrderManager::GetProducerStore()move()pop_front()push_front()push_inorder()Onikiri::MemOrderManager::Read().

00078         {
00079             return list_type::begin();
00080         }

Here is the caller graph for this function:

void OpList::clear (  ) 

OpList.cpp107 行で定義されています。

参照先 alive_table.

00108 {
00109     list_type::clear();
00110     alive_table.reset();
00111 }

size_t OpList::count ( const OpIterator op  )  const

Onikiri::OpBufferで再定義されています。

OpList.cpp122 行で定義されています。

参照先 alive_tableOnikiri::OpIterator::GetID().

参照元 Onikiri::OpBuffer::count()Onikiri::MemOrderManager::DetectAccessOrderViolation()Onikiri::MemOrderManager::Finished()Onikiri::MemOrderManager::GetConsumerLoad()Onikiri::MemOrderManager::GetProducerStore()Onikiri::Scheduler::IsInScheduler()Onikiri::Scheduler::Reschedule().

00123 {
00124     if( alive_table[ op.GetID() ] == true ) {
00125         return 1;
00126     }else {
00127         return 0;
00128     }
00129 }

関数の呼び出しグラフ:

Here is the caller graph for this function:

bool Onikiri::OpList::empty (  )  const [inline]

OpList.h72 行で定義されています。

参照元 Onikiri::InorderList::GetBackOp()Onikiri::InorderList::GetCommittedFrontOp()Onikiri::InorderList::GetFrontOp()Onikiri::InorderList::IsEmpty()push_inorder()Onikiri::InorderList::Retire().

00073         {
00074             return list_type::empty();
00075         }

Here is the caller graph for this function:

const_iterator Onikiri::OpList::end (  )  const [inline]

OpList.h92 行で定義されています。

00093         {
00094             return list_type::end();
00095         }

iterator Onikiri::OpList::end (  )  [inline]

Onikiri::OpBufferで再定義されています。

OpList.h87 行で定義されています。

参照元 Onikiri::OpBuffer::end()erase()Onikiri::InorderIssueSelector::EvaluateSelect()Onikiri::AgeIssueSelector::EvaluateSelect()find_and_erase()Onikiri::MemOrderManager::GetConsumerLoad()Onikiri::MemOrderManager::GetProducerStore()move()pop_back()push_back()push_inorder()Onikiri::MemOrderManager::Read().

00088         {
00089             return list_type::end();
00090         }

Here is the caller graph for this function:

OpList::iterator OpList::erase ( iterator  pos  ) 

OpList.cpp95 行で定義されています。

参照先 alive_tableend()iterator_table.

00096 {
00097     // x handle  insert A
00098     // erase  m_iteratorTable Yvf
00099     OpArray::ID     id     = pos->GetID();
00100 
00101     alive_table[ id ] = false;
00102     iterator_table[ id ] = end();
00103     
00104     return list_type::erase( pos );
00105 }

関数の呼び出しグラフ:

OpList::iterator OpList::erase ( const OpIterator opIterator  ) 

OpList.cpp90 行で定義されています。

参照先 get_iterator().

参照元 Onikiri::MemOrderManager::Delete()find_and_erase()move()pop_back()pop_front()Onikiri::Scheduler::Reschedule().

00091 {
00092     return erase( get_iterator(opIterator) );
00093 }

関数の呼び出しグラフ:

Here is the caller graph for this function:

OpList::iterator OpList::find ( const OpIterator opIterator  ) 

OpList.cpp113 行で定義されています。

参照先 alive_tableget_iterator()Onikiri::OpIterator::GetID().

参照元 find_and_erase().

00114 {
00115     if( alive_table[ opIterator.GetID() ] == true ) {
00116         return get_iterator(opIterator);
00117     }else {
00118         return list_type::end();
00119     }
00120 }

関数の呼び出しグラフ:

Here is the caller graph for this function:

bool OpList::find_and_erase ( OpIterator  op  ) 

Onikiri::OpBufferで再定義されています。

OpList.cpp131 行で定義されています。

参照先 end()erase()find().

参照元 Onikiri::Dispatcher::Delete()Onikiri::Dispatcher::ExitLowerPipeline()Onikiri::OpBuffer::find_and_erase().

00132 {
00133     iterator i = find(op);
00134     bool erased = i != end();
00135     if(erased){
00136         erase(i);
00137     }
00138     return erased;
00139 }

関数の呼び出しグラフ:

Here is the caller graph for this function:

const OpIterator& Onikiri::OpList::front (  )  const [inline]

OpList.h107 行で定義されています。

00108         {
00109             return list_type::front();
00110         }

OpIterator& Onikiri::OpList::front (  )  [inline]

OpList.h97 行で定義されています。

参照元 Onikiri::InorderList::Commit()Onikiri::InorderList::GetCommittedFrontOp()Onikiri::InorderList::GetFrontOp()Onikiri::InorderList::Retire().

00098         {
00099             return list_type::front();
00100         }

Here is the caller graph for this function:

OpList::iterator OpList::get_iterator ( const OpIterator opIterator  )  const

OpList.cpp62 行で定義されています。

参照先 Onikiri::OpIterator::GetID()iterator_table.

参照元 erase()find()Onikiri::InorderList::GetNextIndexOp()Onikiri::InorderList::GetPrevIndexOp()operator[]().

00063 {
00064     return iterator_table[ opIterator.GetID() ];
00065 }

関数の呼び出しグラフ:

Here is the caller graph for this function:

iterator Onikiri::OpList::get_original_iterator ( const OpIterator opIterator  )  const

OpList::iterator OpList::insert ( iterator  pos,
const OpIterator opIterator 
)

OpList.cpp72 行で定義されています。

参照先 alive_tableASSERTOnikiri::OpIterator::GetID()iterator_table.

参照元 Onikiri::OpBuffer::insert()push_back()push_front()push_inorder().

00073 {
00074     OpArray::ID id     = opIterator.GetID();
00075 
00076     ASSERT(
00077         alive_table[ id ] == false, 
00078         "opIterator inserted twice."
00079     );
00080     
00081     iterator iter = 
00082         list_type::insert( pos, opIterator );
00083 
00084     iterator_table[ id ] = iter;
00085     alive_table[ id ] = true;
00086 
00087     return iter;
00088 }

関数の呼び出しグラフ:

Here is the caller graph for this function:

void Onikiri::OpList::move ( OpList from  )  [inline]

OpList.h144 行で定義されています。

参照先 begin()end()erase()push_inorder().

00145         {
00146             for( iterator i = from->begin(); i != from->end(); ){
00147                 push_inorder( *i );
00148                 i = from->erase(i);
00149             }
00150         }

関数の呼び出しグラフ:

OpList::iterator OpList::operator[] ( const OpIterator opIterator  )  const

OpList.cpp67 行で定義されています。

参照先 get_iterator().

00068 {
00069     return get_iterator( opIterator );
00070 }

関数の呼び出しグラフ:

void Onikiri::OpList::pop_back (  )  [inline]

OpList.h132 行で定義されています。

参照先 end()erase().

参照元 Onikiri::InorderList::PopBack().

00133         {
00134             erase( --end() );
00135         }

関数の呼び出しグラフ:

Here is the caller graph for this function:

void Onikiri::OpList::pop_front (  )  [inline]

OpList.h127 行で定義されています。

参照先 begin()erase().

参照元 Onikiri::InorderList::Commit()Onikiri::InorderList::Retire().

00128         {
00129             erase( begin() );
00130         }

関数の呼び出しグラフ:

Here is the caller graph for this function:

void Onikiri::OpList::push_back ( const OpIterator opIterator  )  [inline]

Onikiri::OpBufferで再定義されています。

OpList.h122 行で定義されています。

参照先 end()insert().

参照元 Onikiri::MemOrderManager::Allocate()Onikiri::InorderList::Commit()Onikiri::Dispatcher::Dispatch()Onikiri::OpBuffer::push_back()push_inorder()Onikiri::InorderList::PushBack()Onikiri::Scheduler::Reschedule().

00123         {
00124             insert( end(), opIterator );
00125         }

関数の呼び出しグラフ:

Here is the caller graph for this function:

void Onikiri::OpList::push_front ( const OpIterator opIterator  )  [inline]

Onikiri::OpBufferで再定義されています。

OpList.h117 行で定義されています。

参照先 begin()insert().

参照元 Onikiri::OpBuffer::push_front()push_inorder().

00118         {
00119             insert( begin(), opIterator );
00120         }

関数の呼び出しグラフ:

Here is the caller graph for this function:

void OpList::push_inorder ( OpIterator  op  ) 

Onikiri::OpBufferで再定義されています。

OpList.cpp141 行で定義されています。

参照先 begin()empty()end()insert()push_back()push_front().

参照元 move()Onikiri::OpBuffer::push_inorder()Onikiri::Scheduler::Reschedule().

00142 {
00143     // push_backI
00144     if(empty()) {
00145         push_back(op);
00146         return;
00147     }
00148 
00149     // opSerialIDOpIterator
00150     iterator iter = end();
00151     u64 id = op->GetGlobalSerialID();
00152     do {
00153         --iter;
00154         if( (*iter)->GetGlobalSerialID() < id ) {
00155             // OpIteratorop}
00156             // insert wvfO}1CNg
00157             ++iter;
00158             insert(iter, op);
00159             return;
00160         }
00161     } while( iter != begin() );
00162     
00163     // B
00164     push_front(op);
00165 }

関数の呼び出しグラフ:

Here is the caller graph for this function:

void OpList::resize ( int  capacity  ) 

Onikiri::OpBufferで再定義されています。

OpList.cpp52 行で定義されています。

参照先 alive_tableiterator_table.

00053 {
00054     alive_table.resize( capacity, false );
00055     iterator_table.resize( capacity );
00056 }

void OpList::resize ( const OpArray opArray  ) 

Onikiri::OpBufferで再定義されています。

OpList.cpp47 行で定義されています。

参照先 Onikiri::OpArray::GetCapacity().

参照元 Onikiri::Scheduler::Initialize()Onikiri::MemOrderManager::Initialize()Onikiri::InorderList::Initialize()OpList()Onikiri::OpBuffer::resize().

00048 {
00049     resize( opArray.GetCapacity() );
00050 }

関数の呼び出しグラフ:

Here is the caller graph for this function:

size_t Onikiri::OpList::size (  )  const [inline]

Onikiri::OpBufferで再定義されています。

OpList.h67 行で定義されています。

参照元 Onikiri::MemOrderManager::CanAllocate()Onikiri::InorderList::CanAllocate()Onikiri::InorderIssueSelector::EvaluateSelect()Onikiri::OpBuffer::size().

00068         {
00069             return list_type::size();
00070         }

Here is the caller graph for this function:

template<class SortCmpT>
void Onikiri::OpList::sort ( SortCmpT  cmp  )  [inline]

OpList.h138 行で定義されています。

00139         {
00140             list_type::sort(cmp);
00141         }


変数

boost::dynamic_bitset Onikiri::OpList::alive_table [protected]

OpList.h153 行で定義されています。

参照元 clear()count()erase()find()insert()resize().

std::vector< iterator > Onikiri::OpList::iterator_table [protected]

OpList.h154 行で定義されています。

参照元 erase()get_iterator()insert()resize().


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