00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef INTERFACE_IRANDOMMANAGER_H
00015 #define INTERFACE_IRANDOMMANAGER_H
00016
00017
00018
00019
00020 #include <iostream>
00021 #include <string>
00022 #include <vector>
00023
00024
00025
00026
00027 #ifdef AIDA_STD
00028 # undef AIDA_STD
00029 #endif
00030 #ifdef AIDA_NOT_USE_STD
00031 # define AIDA_STD
00032 #else
00033 # define AIDA_STD std
00034 #endif
00035
00036
00037
00038 class IRandomGenerator;
00039
00040
00041
00042 class IRandomManager
00043 {
00044 public:
00049 virtual IRandomGenerator*
00050 newGenerator(const AIDA_STD::string& = "flat",
00051 const double& = 0.0,
00052 const double& = 0.0,
00053 const double& = 0.0 ) = 0;
00054
00060 virtual IRandomGenerator*
00061 newGenerator(const AIDA_STD::vector<double>&,
00062 const AIDA_STD::string& = "",
00063 const double& = 0.0,
00064 const double& = 1.0 ) = 0;
00065
00067 virtual int nGenerators(void) const = 0;
00068
00072 virtual IRandomGenerator* gen(const int& id) = 0;
00073
00075 virtual void destroy(const int& victim) = 0;
00076
00078 virtual void destroyAll(void) = 0;
00079
00081 virtual void listGenerators(AIDA_STD::ostream& = AIDA_STD::cout) const = 0;
00082
00083 public:
00084 virtual ~IRandomManager() { }
00085
00086 };
00087
00088
00089
00090
00091
00092 extern "C" {
00094 IRandomManager* createIRandomManager(void);
00095 }
00096
00097
00098
00099
00100 #endif
00101