本文整理汇总了C++中ProgressBar::Update方法的典型用法代码示例。如果您正苦于以下问题:C++ ProgressBar::Update方法的具体用法?C++ ProgressBar::Update怎么用?C++ ProgressBar::Update使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ProgressBar
的用法示例。
在下文中一共展示了ProgressBar::Update方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoCrdAction
Exec::RetType Exec_CrdAction::DoCrdAction(CpptrajState& State, ArgList& actionargs,
DataSet_Coords* CRD, Action* act,
TrajFrameCounter const& frameCount) const
{
Timer total_time;
total_time.Start();
# ifdef MPI
ActionInit state(State.DSL(), State.DFL(), trajComm_);
# else
ActionInit state(State.DSL(), State.DFL());
# endif
if ( act->Init( actionargs, state, State.Debug() ) != Action::OK )
return CpptrajState::ERR;
actionargs.CheckForMoreArgs();
// Set up frame and parm for COORDS.
ActionSetup originalSetup( CRD->TopPtr(), CRD->CoordsInfo(), CRD->Size() );
Frame originalFrame = CRD->AllocateFrame();
// Set up for this topology
Action::RetType setup_ret = act->Setup( originalSetup );
if ( setup_ret == Action::ERR || setup_ret == Action::SKIP )
return CpptrajState::ERR;
// If the topology was modified, we will need a new COORDS set.
DataSet_Coords* crdOut = 0;
if ( setup_ret == Action::MODIFY_TOPOLOGY ) {
// This will not work for a TRJ set.
switch ( CRD->Type() ) {
case DataSet::TRAJ : mprinterr("Error: Cannot modify TRAJ data sets.\n"); break;
case DataSet::COORDS : crdOut = (DataSet_Coords*)new DataSet_Coords_CRD(); break;
case DataSet::REF_FRAME : crdOut = (DataSet_Coords*)new DataSet_Coords_REF(); break;
default: crdOut = 0; // SANITY
}
if (crdOut == 0) return CpptrajState::ERR;
mprintf("Info: crdaction: COORDS set '%s' will be modified by action '%s'\n",
CRD->legend(), actionargs.Command());
if (frameCount.TotalReadFrames() != (int)CRD->Size())
mprintf("Info: crdaction: Previous size= %zu, new size is %i\n",
CRD->Size(), frameCount.TotalReadFrames());
// Set up set, copy original metadata
crdOut->SetMeta( CRD->Meta() );
if (crdOut->CoordsSetup( originalSetup.Top(), originalSetup.CoordInfo() ))
return CpptrajState::ERR;
DataSet::SizeArray mfArray(1, frameCount.TotalReadFrames());
if (crdOut->Allocate( mfArray )) return CpptrajState::ERR;
}
// Loop over all frames in COORDS.
ProgressBar* progress = 0;
if (State.ShowProgress())
progress = new ProgressBar( frameCount.TotalReadFrames() );
int set = 0;
for (int frame = frameCount.Start(); frame < frameCount.Stop();
frame += frameCount.Offset(), ++set)
{
// Since Frame can be modified by actions, save original and use currentFrame
ActionFrame frm( &originalFrame, set );
if (progress != 0) progress->Update( set );
CRD->GetFrame( frame, originalFrame );
Action::RetType ret = act->DoAction( set, frm );
if (ret == Action::ERR) {
mprinterr("Error: crdaction: Frame %i, set %i\n", frame + 1, set + 1);
break;
}
// Check if frame was modified. If so, update COORDS.
if ( ret == Action::MODIFY_COORDS ) {
if (crdOut != 0)
crdOut->AddFrame( frm.Frm() );
else
CRD->SetCRD( frame, frm.Frm() );
}
}
if (progress != 0) delete progress;
# ifdef MPI
act->SyncAction();
# endif
// If topology was modified, replace old set with new.
if ( setup_ret == Action::MODIFY_TOPOLOGY ) {
mprintf("Info: crdaction: Topology for '%s' was modified by action '%s'\n",
CRD->legend(), actionargs.Command());
State.DSL().RemoveSet( CRD );
State.DSL().AddSet( crdOut );
}
act->Print();
State.MasterDataFileWrite();
total_time.Stop();
mprintf("TIME: Total action execution time: %.4f seconds.\n", total_time.Total());
return CpptrajState::OK;
}