QMCPACK
ResourceCollection Class Reference
+ Collaboration diagram for ResourceCollection:

Public Member Functions

 ResourceCollection (const std::string &name)
 
 ResourceCollection (const ResourceCollection &)
 
const std::string & getName () const
 
size_t size () const
 
bool empty () const
 
size_t addResource (std::unique_ptr< Resource > &&res, bool noprint=false)
 
void printResources () const
 
template<class RS >
ResourceHandle< RS > lendResource ()
 
template<class RS >
void takebackResource (ResourceHandle< RS > &res_handle)
 
void rewind (size_t cursor=0)
 

Private Member Functions

ResourcelendResourceImpl ()
 
void takebackResourceImpl (Resource &res)
 

Private Attributes

const std::string name_
 
size_t cursor_index_
 
std::vector< std::unique_ptr< Resource > > collection_
 

Detailed Description

Definition at line 25 of file ResourceCollection.h.

Constructor & Destructor Documentation

◆ ResourceCollection() [1/2]

ResourceCollection ( const std::string &  name)

Definition at line 18 of file ResourceCollection.cpp.

◆ ResourceCollection() [2/2]

Definition at line 20 of file ResourceCollection.cpp.

References ResourceCollection::addResource(), and ResourceCollection::collection_.

20  : name_(ref.getName()), cursor_index_(0)
21 {
22  for (auto& res : ref.collection_)
23  addResource(std::unique_ptr<Resource>(res->makeClone()), true);
24 }
size_t addResource(std::unique_ptr< Resource > &&res, bool noprint=false)

Member Function Documentation

◆ addResource()

size_t addResource ( std::unique_ptr< Resource > &&  res,
bool  noprint = false 
)

Definition at line 36 of file ResourceCollection.cpp.

References qmcplusplus::app_debug_stream(), ResourceCollection::collection_, and ResourceCollection::name_.

Referenced by WFCResourceConsumer::createResource(), SOECPotential::createResource(), VirtualParticleSet::createResource(), SoaDistanceTableAAOMPTarget< T, D, SC >::createResource(), SplineC2COMPTarget< ST >::createResource(), SplineC2ROMPTarget< ST >::createResource(), NonLocalECPotential::createResource(), SoaDistanceTableABOMPTarget< T, D, SC >::createResource(), BareKineticEnergy::createResource(), TwoBodyJastrow< FT >::createResource(), RealSpacePositionsOMPTarget::createResource(), MultiSlaterDetTableMethod::createResource(), SpinorSet::createResource(), SoaLocalizedBasisSet< COT, ORBT >::createResource(), CoulombPBCAB::createResource(), MultiDiracDeterminant::createResource(), LCAOrbitalSet::createResource(), J1OrbitalSoA< FT >::createResource(), DiracDeterminantBatched< PL, VT, FPVT >::createResource(), QMCHamiltonian::createResource(), ParticleSet::createResource(), SoaAtomicBasisSet< ROT, SH >::createResource(), and ResourceCollection::ResourceCollection().

37 {
38  size_t index = collection_.size();
39  res->index_in_collection_ = index;
40  if (!noprint)
41  app_debug_stream() << "Multi walker shared resource \"" << res->getName() << "\" created in resource collection \""
42  << name_ << "\" index " << index << std::endl;
43  collection_.emplace_back(std::move(res));
44  return index;
45 }
std::vector< std::unique_ptr< Resource > > collection_
std::ostream & app_debug_stream()
Definition: OutputManager.h:71

◆ empty()

bool empty ( ) const
inline

Definition at line 34 of file ResourceCollection.h.

References ResourceCollection::collection_.

34 { return collection_.size() == 0; }
std::vector< std::unique_ptr< Resource > > collection_

◆ getName()

const std::string& getName ( ) const
inline

Definition at line 31 of file ResourceCollection.h.

References ResourceCollection::name_.

Referenced by ResourceCollection::printResources().

31 { return name_; }

◆ lendResource()

◆ lendResourceImpl()

Resource & lendResourceImpl ( )
private

Definition at line 47 of file ResourceCollection.cpp.

References ResourceCollection::collection_, and ResourceCollection::cursor_index_.

Referenced by ResourceCollection::lendResource().

48 {
49  if (cursor_index_ >= collection_.size())
50  throw std::runtime_error("ResourceCollection::lendResource BUG no more resource to lend.");
51  if (cursor_index_ != collection_[cursor_index_]->index_in_collection_)
52  throw std::runtime_error(
53  "ResourceCollection::lendResource BUG mismatched cursor index and recorded index in the resource.");
54  return *collection_[cursor_index_++];
55 }
std::vector< std::unique_ptr< Resource > > collection_

◆ printResources()

void printResources ( ) const

Definition at line 26 of file ResourceCollection.cpp.

References ResourceCollection::collection_, and ResourceCollection::getName().

27 {
28  std::cout << "list resources in " << getName() << std::endl;
29  std::cout << "-------------------------------" << std::endl;
30  for (int i = 0; i < collection_.size(); i++)
31  std::cout << "resource " << i << " name: " << collection_[i]->getName()
32  << " address: " << collection_[i].get() << std::endl;
33  std::cout << "-------------------------------" << std::endl << std::endl;
34 }
std::vector< std::unique_ptr< Resource > > collection_
const std::string & getName() const

◆ rewind()

◆ size()

size_t size ( void  ) const
inline

Definition at line 33 of file ResourceCollection.h.

References ResourceCollection::collection_.

33 { return collection_.size(); }
std::vector< std::unique_ptr< Resource > > collection_

◆ takebackResource()

◆ takebackResourceImpl()

void takebackResourceImpl ( Resource res)
private

Definition at line 57 of file ResourceCollection.cpp.

References ResourceCollection::collection_, ResourceCollection::cursor_index_, and Resource::index_in_collection_.

Referenced by ResourceCollection::takebackResource().

58 {
59  if (cursor_index_ >= collection_.size())
60  throw std::runtime_error("ResourceCollection::takebackResource BUG cannot take back resources more than owned.");
61  if (cursor_index_ != res.index_in_collection_)
62  throw std::runtime_error(
63  "ResourceCollection::takebackResource BUG mismatched cursor index and recorded index in the resource.");
64  if (&res != collection_[cursor_index_++].get())
65  throw std::runtime_error(
66  "ResourceCollection::takebackResource BUG the resource taken back mismatches the one lent.");
67 }
std::vector< std::unique_ptr< Resource > > collection_

Member Data Documentation

◆ collection_

◆ cursor_index_

◆ name_

const std::string name_
private

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