QMCPACK
RandomBase.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) 2023 QMCPACK developers.
6 //
7 // File developed by: Peter Doak, doakpw@ornl.gov, Oak Ridge National Laboratory
8 // Ye Luo, yeluo@anl.gov, Argonne National Laboratory
9 // Steven Hahn, hahnse@ornl.gov,
10 //
11 //////////////////////////////////////////////////////////////////////////////////////
12 
13 #ifndef QMCPLUSPLUS_RANDOMBASE_H
14 #define QMCPLUSPLUS_RANDOMBASE_H
15 
16 #include <istream>
17 #include <memory>
18 #include <ostream>
19 #include <vector>
20 
21 namespace qmcplusplus
22 {
23 template<typename T>
25 {
26 public:
27  using result_type = T;
28  using uint_type = uint_fast32_t;
29  virtual ~RandomBase() = default;
30  virtual void init(int iseed_in) = 0;
31  virtual void seed(uint_type aseed) = 0;
32  virtual T operator()() = 0;
33  virtual void write(std::ostream& rout) const = 0;
34  virtual void read(std::istream& rin) = 0;
35  virtual void load(const std::vector<uint_type>& newstate) = 0;
36  virtual void save(std::vector<uint_type>& curstate) const = 0;
37  virtual size_t state_size() const = 0;
38  virtual std::unique_ptr<RandomBase<T>> makeClone() const = 0;
39 };
40 
41 } // namespace qmcplusplus
42 #endif
virtual void read(std::istream &rin)=0
helper functions for EinsplineSetBuilder
Definition: Configuration.h:43
virtual void load(const std::vector< uint_type > &newstate)=0
virtual ~RandomBase()=default
virtual size_t state_size() const =0
virtual std::unique_ptr< RandomBase< T > > makeClone() const =0
virtual void write(std::ostream &rout) const =0
virtual void seed(uint_type aseed)=0
virtual void save(std::vector< uint_type > &curstate) const =0
virtual void init(int iseed_in)=0
virtual T operator()()=0