13 #ifndef ROOT_Math_GSLRngWrapper
14 #define ROOT_Math_GSLRngWrapper
43 GSLRngWrapper(
const gsl_rng_type * type) :
54 GSLRngWrapper(
const gsl_rng * r ) :
58 fRng =
const_cast<gsl_rng *
>(r);
64 GSLRngWrapper(GSLRngWrapper & r) :
68 fRng = gsl_rng_clone(r.fRng);
74 GSLRngWrapper & operator = (
const GSLRngWrapper & rhs) {
75 if (
this == &rhs)
return *
this;
76 fRngType = rhs.fRngType;
78 if (fRngType == rhs.fRngType) {
79 iret = gsl_rng_memcpy(fRng, rhs.fRng);
80 if (!iret)
return *
this;
84 fRng = gsl_rng_clone(rhs.fRng);
97 if (fRngType == 0) SetDefaultType();
98 if (fRng != 0 && fOwn) Free();
99 fRng = gsl_rng_alloc( fRngType );
106 if (fRng != 0) gsl_rng_free(fRng);
111 void SetType(
const gsl_rng_type * type) {
115 void SetDefaultType() {
118 fRngType = gsl_rng_default;
121 void PrintState()
const {
122 gsl_rng_print_state(fRng);
125 inline gsl_rng * Rng() {
return fRng; }
127 inline const gsl_rng * Rng()
const {
return fRng; }
135 const gsl_rng_type * fRngType;