9#ifndef CLASSDESC_RANDOM_INIT_BASE_H
10#define CLASSDESC_RANDOM_INIT_BASE_H
24 virtual double rand() {
return double(std::rand())/RAND_MAX;}
30 template <
class T>
void random_init(
random_init_t&,
const string&,
T&);
32 template <
class T>
void random_initp(
random_init_t&,
const string&,
const T&)
40 template <
class T>
typename
44 a=
T(std::numeric_limits<T>::max()*r.rand());
47 inline void random_initp(
random_init_t& r,
const string&,
char& a)
49 a=char((127-32)*r.rand()+32);
52 inline void random_initp(
random_init_t& r,
const string&,
wchar_t& a)
54 a=wchar_t((127-32)*r.rand()+32);
59 template <
class T>
typename
64 o<<
T(std::numeric_limits<T>::max()*r.rand());
65 std::istringstream is(o.str());
77 void random_init(
random_init_t& r,
const string& d, std::basic_string<T>& a)
80 a.resize(10*r.rand());
81 for (
size_t i=0; i<a.size(); ++i)
82 random_init(r,d,a[i]);
88 int ndims,
size_t ncopies,...)
93 for (
int i=ndims-2; i>=0; --i) cnt*=va_arg(ap,
size_t);
95 for (
size_t i=0; i<cnt; ++i)
96 random_init(r,d,(&a)[i]);
108 int idx=int(enum_keys<T>().size()*r.
rand());
109 arg=enum_keysData<T>().keysData[
idx].value;
114 template <
class T>
typename
115 enable_if<is_sequence<T>,
void>::T
119 resize(a, 10*r.
rand());
120 for (
typename T::iterator i=a.begin(); i!=a.end(); ++i)
124 template <
class T1,
class T2>
125 void random_init(random_init_t& r,
const string& d, std::pair<T1,T2>& a)
127 random_init(r,d+
".first",a.first);
128 random_init(r,d+
".second",a.second);
131 template <
class T>
typename
135 int numElem=int(10*r.rand());
136 for (
int i=0; i<numElem; ++i)
138 typename T::value_type v;
145 template <
class T>
void random_initp(
random_init_t&,
const string&,
T*) {}
152 void random_init_onbase(
random_init_t& targ,
const string& desc,
T& arg)
153 {random_init(targ,desc,arg);}
166#include "use_mbr_pointers.h"
167CLASSDESC_USE_OLDSTYLE_MEMBER_OBJECTS(random_init)
168CLASSDESC_USE_OLDSTYLE_MEMBER_OBJECTS(random_init_onbase)
169CLASSDESC_FUNCTION_NOP(random_init)
170CLASSDESC_FUNCTION_NOP(random_init_onbase)
172using classdesc::random_init;
173using classdesc::random_init_onbase;
Definition classdesc.h:868
Definition classdesc.h:920
Definition classdesc.h:923
Definition random_init_base.h:21
virtual double rand()
return a uniform random number in [0..1)
Definition random_init_base.h:24
Contains access_* structs, and nothing else. These structs are used to gain access to private members...
Definition classdesc_access.h:20
Contains definitions related to classdesc functionality.
void random_init_normalise(T &)
Definition random_init_epilogue.h:119
std::string idx(const std::string &prefix, size_t i)
utility for generating index keys (for use with arrays)
Definition xml_common.h:14
Definition classdesc.h:1012
Definition classdesc.h:405
Definition classdesc.h:299
controlled template specialisation: stolen from boost::enable_if.
Definition classdesc.h:282
Definition classdesc_access.h:27