QMCPACK
Resource.h
Go to the documentation of this file.
1 //////////////////////////////////////////////////////////////////////////////////////
2 // This file is distributed under the University of Illinois/NCSA Open Source License.
3 // See LICENSE file in top directory for details.
4 //
5 // Copyright (c) 2021 QMCPACK developers.
6 //
7 // File developed by: Ye Luo, yeluo@anl.gov, Argonne National Laboratory
8 //
9 // File created by: Ye Luo, yeluo@anl.gov, Argonne National Laboratory
10 //////////////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef QMCPLUSPLUS_RESOURCE_H
13 #define QMCPLUSPLUS_RESOURCE_H
14 
15 #include <string>
16 #include <memory>
17 
18 namespace qmcplusplus
19 {
20 class Resource
21 {
22 public:
23  Resource(const std::string& name) : name_(name) {}
24  virtual ~Resource() = default;
25  virtual std::unique_ptr<Resource> makeClone() const = 0;
26  const std::string& getName() const { return name_; }
27 
28 private:
29  const std::string name_;
31  friend class ResourceCollection;
32 };
33 
34 /** For the sake of generic code sometimes an dummy resource is needed to pass API.
35  */
36 class DummyResource : public Resource
37 {
38 public:
39  DummyResource() : Resource("Dummy") {}
40  DummyResource(const std::string& name) : Resource(name) {}
41  std::unique_ptr<Resource> makeClone() const override { return std::make_unique<DummyResource>(*this); }
42 };
43 } // namespace qmcplusplus
44 #endif
std::unique_ptr< Resource > makeClone() const override
Definition: Resource.h:41
const std::string & getName() const
Definition: Resource.h:26
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
Resource(const std::string &name)
Definition: Resource.h:23
const std::string name_
Definition: Resource.h:29
virtual std::unique_ptr< Resource > makeClone() const =0
For the sake of generic code sometimes an dummy resource is needed to pass API.
Definition: Resource.h:36
DummyResource(const std::string &name)
Definition: Resource.h:40
virtual ~Resource()=default