00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00019 #ifndef _CRandVar_extern_h
00020 #define _CRandVar_extern_h
00021
00022 #include "CRandVar.h"
00023
00024
00025 class UTILIB_API externCRandVar : public CRandVar {
00026
00027 public:
00028
00030 externCRandVar(RNG* rng);
00032 virtual double operator()();
00033
00034 private:
00035
00037 virtual double eval_c_func() = 0;
00038
00039 };
00040
00041
00042 inline externCRandVar::externCRandVar(RNG* rng)
00043 : CRandVar(rng) {}
00044
00045
00046 inline double externCRandVar::operator()()
00047 {
00048 extern void set_global_RNG(RNG* rng);
00049
00050 if (generator() == NULL) {
00051 ErrReturn("externCRandVar::operator() : Attempting to use a NULL generator.");
00052 }
00053 else {
00054 set_global_RNG(generator());
00055 return eval_c_func();
00056 }
00057 }
00058
00059 #endif