small changes
This commit is contained in:
parent
6e1f2d4d56
commit
4e359bdfea
|
@ -27,13 +27,12 @@ const char symbols[24] = "!\"$%&/()=?'#*+~-_><.:,;";
|
||||||
/*!
|
/*!
|
||||||
* Generates a random character sequence using the given \a randomizer.
|
* Generates a random character sequence using the given \a randomizer.
|
||||||
*/
|
*/
|
||||||
void generateRandomCharacterSequence(char *result, int length, std::function<int ()> randomizer, int highestRandomNumber, bool useSmallLetters, bool useCapitalLetters, bool useNumbers, bool useSymbols, bool useAtLeastOneOfEachCategory)
|
void generateRandomCharacterSequence(char *result, unsigned int length, std::function<int ()> randomizer, int highestRandomNumber, bool useSmallLetters, bool useCapitalLetters, bool useNumbers, bool useSymbols, bool useAtLeastOneOfEachCategory)
|
||||||
{
|
{
|
||||||
if(length <= 0) {
|
if(length) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int categoryCount = 0;
|
signed char categoryCount = 0;
|
||||||
int neededCharacters;
|
|
||||||
bool needSmallLetter = false;
|
bool needSmallLetter = false;
|
||||||
bool needCapitalLetter = false;
|
bool needCapitalLetter = false;
|
||||||
bool needNumber = false;
|
bool needNumber = false;
|
||||||
|
@ -54,14 +53,14 @@ void generateRandomCharacterSequence(char *result, int length, std::function<int
|
||||||
needSymbol = useAtLeastOneOfEachCategory;
|
needSymbol = useAtLeastOneOfEachCategory;
|
||||||
++categoryCount;
|
++categoryCount;
|
||||||
}
|
}
|
||||||
neededCharacters = useAtLeastOneOfEachCategory ? categoryCount : 0;
|
signed char neededCharacters = useAtLeastOneOfEachCategory ? categoryCount : 0;
|
||||||
if(categoryCount <= 0) {
|
if(!categoryCount) {
|
||||||
result[0] = '\0';
|
*result = '\0';
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for(int i = 0; i < length; ++i) {
|
for(char *i = result, *end = result + length; i < end; ++i) {
|
||||||
int category = -1;
|
int category = -1;
|
||||||
if((neededCharacters > 0 && (randomizer() < (highestRandomNumber / 2.0))) || (neededCharacters + i >= length)) {
|
if((neededCharacters > 0 && (randomizer() < (highestRandomNumber / 2.0))) || ((end - i) >= neededCharacters)) {
|
||||||
if(needSmallLetter)
|
if(needSmallLetter)
|
||||||
category = 0;
|
category = 0;
|
||||||
if(needCapitalLetter && ((category == -1) || (randomizer() < (highestRandomNumber / 2.0))))
|
if(needCapitalLetter && ((category == -1) || (randomizer() < (highestRandomNumber / 2.0))))
|
||||||
|
@ -82,28 +81,28 @@ void generateRandomCharacterSequence(char *result, int length, std::function<int
|
||||||
}
|
}
|
||||||
switch(category) {
|
switch(category) {
|
||||||
case 0:
|
case 0:
|
||||||
result[i] = letters[rand() % 26];
|
*i = letters[rand() % 26];
|
||||||
if(needSmallLetter) {
|
if(needSmallLetter) {
|
||||||
needSmallLetter = false;
|
needSmallLetter = false;
|
||||||
--neededCharacters;
|
--neededCharacters;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
result[i] = capitalLetters[rand() % 26];
|
*i = capitalLetters[rand() % 26];
|
||||||
if(needCapitalLetter) {
|
if(needCapitalLetter) {
|
||||||
needCapitalLetter = false;
|
needCapitalLetter = false;
|
||||||
--neededCharacters;
|
--neededCharacters;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
result[i] = numbers[rand() % 9];
|
*i = numbers[rand() % 9];
|
||||||
if(needNumber) {
|
if(needNumber) {
|
||||||
needNumber = false;
|
needNumber = false;
|
||||||
--neededCharacters;
|
--neededCharacters;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
result[i] = symbols[rand() % 22];
|
*i = symbols[rand() % 22];
|
||||||
if(needSymbol) {
|
if(needSymbol) {
|
||||||
needSymbol = false;
|
needSymbol = false;
|
||||||
--neededCharacters;
|
--neededCharacters;
|
||||||
|
@ -116,7 +115,7 @@ void generateRandomCharacterSequence(char *result, int length, std::function<int
|
||||||
/*!
|
/*!
|
||||||
* Generates a random character sequence using std::rand().
|
* Generates a random character sequence using std::rand().
|
||||||
*/
|
*/
|
||||||
void generateRandomCharacterSequence(char *result, int length, bool useSmallLetters, bool useCapitalLetters, bool useNumbers, bool useSymbols, bool useAtLeastOneOfEachCategory)
|
void generateRandomCharacterSequence(char *result, unsigned int length, bool useSmallLetters, bool useCapitalLetters, bool useNumbers, bool useSymbols, bool useAtLeastOneOfEachCategory)
|
||||||
{
|
{
|
||||||
generateRandomCharacterSequence(result, length, rand, RAND_MAX, useSmallLetters, useCapitalLetters, useNumbers, useSymbols, useAtLeastOneOfEachCategory);
|
generateRandomCharacterSequence(result, length, rand, RAND_MAX, useSmallLetters, useCapitalLetters, useNumbers, useSymbols, useAtLeastOneOfEachCategory);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,8 +7,8 @@
|
||||||
|
|
||||||
namespace RandomUtilities {
|
namespace RandomUtilities {
|
||||||
|
|
||||||
LIB_EXPORT void generateRandomCharacterSequence(char *result, int length, bool useSmallLetters = true, bool useCapitalLetters = true, bool useNumbers = true, bool useSymbols = true, bool useAtLeastOneOfEachCategory = true);
|
LIB_EXPORT void generateRandomCharacterSequence(char *result, unsigned int length, bool useSmallLetters = true, bool useCapitalLetters = true, bool useNumbers = true, bool useSymbols = true, bool useAtLeastOneOfEachCategory = true);
|
||||||
LIB_EXPORT void generateRandomCharacterSequence(char *result, int length, std::function<int ()> randomizer, int maximalRandomNumber, bool useSmallLetters = true, bool useCapitalLetters = true, bool useNumbers = true, bool useSymbols = true, bool useAtLeastOneOfEachCategory = true);
|
LIB_EXPORT void generateRandomCharacterSequence(char *result, unsigned int length, std::function<int ()> randomizer, int maximalRandomNumber, bool useSmallLetters = true, bool useCapitalLetters = true, bool useNumbers = true, bool useSymbols = true, bool useAtLeastOneOfEachCategory = true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue