00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _MPCL_UTIL_STRATEGY_RANDOM_STRING_GENERATOR__
00027 #define _MPCL_UTIL_STRATEGY_RANDOM_STRING_GENERATOR__
00028
00029 #include "general-functions.hh"
00030 #include "../../text/string.hh"
00031
00032
00034 namespace mpcl
00035 {
00036
00038 namespace util
00039 {
00040
00042 namespace strategy
00043 {
00044
00049 class TRandomStringGenerator
00050 {
00051
00052 private:
00053
00055 const TString kyAlphabet;
00056
00058 const TString::size_type kzMaxAlphabetIndex;
00059
00060
00061 public:
00062
00063
00064
00065
00066
00070 TRandomStringGenerator (const char* pkcALPHABET) :
00071 kyAlphabet (pkcALPHABET) ,
00072 kzMaxAlphabetIndex (kyAlphabet.size() - 1) {}
00073
00080 TString execute (const TString::size_type& kzSIZE)
00081 {
00082 MRandomNumberGenerator<TString::size_type> mRandomNumberGenerator;
00083 TString yResult;
00084
00085 for (TString::size_type I = 0; ( I < kzSIZE ) ;++I)
00086 {
00087 yResult.append (1, kyAlphabet [mRandomNumberGenerator (kzMaxAlphabetIndex)]);
00088 }
00089 return yResult;
00090 }
00091
00092 };
00093
00094 }
00095
00096 }
00097
00098 }
00099
00100
00101 #endif // not _MPCL_UTIL_STRATEGY_RANDOM_STRING_GENERATOR__