NAMD
Public Member Functions | Public Attributes | List of all members
CollectionMaster::CollectVectorSequence Class Reference

#include <CollectionMaster.h>

Public Member Functions

void submitData (CollectVectorMsg *msg, int max_index)
 
void enqueue (int seq, Lattice &lattice)
 
CollectVectorInstanceremoveReady (void)
 
void block ()
 
void unblock ()
 
 CollectVectorSequence ()
 

Public Attributes

ResizeArray
< CollectVectorInstance * > 
data
 
ResizeArray< int > queue
 
ResizeArray< Latticelatqueue
 
int blocked
 

Detailed Description

Definition at line 241 of file CollectionMaster.h.

Constructor & Destructor Documentation

CollectionMaster::CollectVectorSequence::CollectVectorSequence ( )
inline

Definition at line 291 of file CollectionMaster.h.

Member Function Documentation

void CollectionMaster::CollectVectorSequence::block ( )
inline

Definition at line 289 of file CollectionMaster.h.

References blocked.

Referenced by CollectionMaster::blockPositions().

void CollectionMaster::CollectVectorSequence::enqueue ( int  seq,
Lattice lattice 
)
inline

Definition at line 264 of file CollectionMaster.h.

References ResizeArray< T >::add(), latqueue, and queue.

Referenced by CollectionMaster::enqueueForces(), CollectionMaster::enqueuePositions(), and CollectionMaster::enqueueVelocities().

264  {
265  queue.add(seq);
266  latqueue.add(lattice);
267  }
int add(const Elem &elem)
Definition: ResizeArray.h:97
CollectVectorInstance* CollectionMaster::CollectVectorSequence::removeReady ( void  )
inline

Definition at line 269 of file CollectionMaster.h.

References blocked, data, ResizeArray< T >::del(), latqueue, queue, and ResizeArray< T >::size().

Referenced by CollectionMaster::enqueueForces(), CollectionMaster::enqueuePositions(), CollectionMaster::enqueueVelocities(), CollectionMaster::receiveForces(), CollectionMaster::receivePositions(), and CollectionMaster::receiveVelocities().

270  {
271  CollectVectorInstance *o = 0;
272  if ( queue.size() && ! blocked )
273  {
274  int seq = queue[0];
275  CollectVectorInstance **c = data.begin();
276  CollectVectorInstance **c_e = data.end();
277  for( ; c != c_e && (*c)->seq != seq; ++c );
278  if ( c != c_e && (*c)->ready() )
279  {
280  o = *c;
281  o->lattice = latqueue[0];
282  queue.del(0,1);
283  latqueue.del(0,1);
284  }
285  }
286  return o;
287  }
void del(int index, int num=1)
Definition: ResizeArray.h:104
ResizeArray< CollectVectorInstance * > data
int size(void) const
Definition: ResizeArray.h:127
void CollectionMaster::CollectVectorSequence::submitData ( CollectVectorMsg msg,
int  max_index 
)
inline

Definition at line 245 of file CollectionMaster.h.

References data, and CollectVectorMsg::seq.

Referenced by CollectionMaster::receiveForces(), CollectionMaster::receiveOutputForceReady(), CollectionMaster::receiveOutputVelReady(), CollectionMaster::receivePositions(), and CollectionMaster::receiveVelocities().

246  {
247  int seq = msg->seq;
248  CollectVectorInstance **c = data.begin();
249  CollectVectorInstance **c_e = data.end();
250  for( ; c != c_e && (*c)->seq != seq; ++c );
251  if ( c == c_e )
252  {
253  c = data.begin();
254  for( ; c != c_e && (*c)->notfree(); ++c );
255  if ( c == c_e ) {
256  data.add(new CollectVectorInstance(seq));
257  c = data.end() - 1;
258  }
259  (*c)->reset(seq);
260  }
261  (*c)->append(msg, max_index);
262  }
ResizeArray< CollectVectorInstance * > data
void CollectionMaster::CollectVectorSequence::unblock ( )
inline

Definition at line 290 of file CollectionMaster.h.

References blocked.

Referenced by CollectionMaster::unblockPositions().

Member Data Documentation

int CollectionMaster::CollectVectorSequence::blocked

Definition at line 296 of file CollectionMaster.h.

Referenced by block(), removeReady(), and unblock().

ResizeArray<CollectVectorInstance*> CollectionMaster::CollectVectorSequence::data

Definition at line 293 of file CollectionMaster.h.

Referenced by removeReady(), and submitData().

ResizeArray<Lattice> CollectionMaster::CollectVectorSequence::latqueue

Definition at line 295 of file CollectionMaster.h.

Referenced by enqueue(), and removeReady().

ResizeArray<int> CollectionMaster::CollectVectorSequence::queue

Definition at line 294 of file CollectionMaster.h.

Referenced by enqueue(), and removeReady().


The documentation for this class was generated from the following file: