(svn r24801) -Codechange: Add functions to set integral DParams to suitable values for size computations.

This commit is contained in:
frosch
2012-12-08 17:18:51 +00:00
parent 18a5ba4ad7
commit b533523258
18 changed files with 82 additions and 49 deletions

View File

@@ -90,6 +90,38 @@ void StringParameters::ShiftParameters(uint amount)
MemMoveT(this->data + amount, this->data, this->num_param - amount);
}
/**
* Set DParam n to some number that is suitable for string size computations.
* @param n Index of the string parameter.
* @param max_value The biggest value which shall be displayed.
* For the result only the number of digits of \a max_value matter.
* @param min_count Minimum number of digits indepentent of \a max.
*/
void SetDParamMaxValue(uint n, uint64 max_value, uint min_count)
{
uint num_digits = 1;
while (max_value >= 10) {
num_digits++;
max_value /= 10;
}
SetDParamMaxDigits(n, max(min_count, num_digits));
}
/**
* Set DParam n to some number that is suitable for string size computations.
* @param n Index of the string parameter.
* @param count Number of digits which shall be displayable.
*/
void SetDParamMaxDigits(uint n, uint count)
{
static const uint biggest_digit = 8; ///< Digit with the biggest string width.
uint64 val = biggest_digit;
for (; count > 1; count--) {
val = 10 * val + biggest_digit;
}
SetDParam(n, val);
}
/**
* Copy \a num string parameters from array \a src into the global string parameter array.
* @param offs Index in the global array to copy the first string parameter to.