[PATCH 1/3] Make 'string_to_grams()' use proper type safe types

Linus Torvalds torvalds at linux-foundation.org
Tue Jan 7 23:43:48 UTC 2014


Oh Christ. I think I screwed up whitespace because I didn't have the
right alpine settings for sending.

If you have trouble applying these, holler.

              Linus

On Wed, Jan 8, 2014 at 3:34 PM, Linus Torvalds
<torvalds at linux-foundation.org> wrote:
>
> From: Linus Torvalds <torvalds at linux-foundation.org>
> Date: Wed, 8 Jan 2014 14:24:35 +0800
> Subject: [PATCH 1/3] Make 'string_to_grams()' use proper type safe types
>
> Make it use 'weight_t' and hide the "grams" part inside the type.  That
> was the whole point of the weight_t type, after all.  Returning a
> "double" was always bogus, since we internally always do integer grams
> (and the function actually used "rint()" to get all the rounding right
> anyway).
>
> As a result, it's now called "string_to_weight()".
>
> Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
> ---
>
> This shouldn't really change anything, just type cleanup.
>
>  qt-ui/models.cpp | 11 +++++++----
>  1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp
> index c2b324f97c80..7f5764779c81 100644
> --- a/qt-ui/models.cpp
> +++ b/qt-ui/models.cpp
> @@ -464,13 +464,14 @@ void WeightModel::passInData(const QModelIndex& index,
> const QVariant& value)
>         }
>  }
>
> -double string_to_grams(char *str)
> +weight_t string_to_weight(char *str)
>  {
>         char *end;
>         double value = strtod_flags(str, &end, 0);
>         QString rest = QString(end).trimmed();
>         QString local_kg = WeightModel::tr("kg");
>         QString local_lbs = WeightModel::tr("lbs");
> +       weight_t weight;
>
>         if (rest.startsWith("kg") || rest.startsWith(local_kg))
>                 goto kg;
> @@ -480,9 +481,11 @@ double string_to_grams(char *str)
>         if (prefs.units.weight == prefs.units.LBS)
>                 goto lbs;
>  kg:
> -       return rint(value * 1000);
> +       weight.grams = rint(value * 1000);
> +       return weight;
>  lbs:
> -       return lbs_to_grams(value);
> +       weight.grams = lbs_to_grams(value);
> +       return weight;
>  }
>
>  bool WeightModel::setData(const QModelIndex& index, const QVariant& value,
> int role)
> @@ -509,7 +512,7 @@ bool WeightModel::setData(const QModelIndex& index,
> const QVariant& value, int r
>                 break;
>         case WEIGHT:
>                 if (CHANGED(data, "", "")) {
> -                       ws->weight.grams =
> string_to_grams(vString.toUtf8().data());
> +                       ws->weight =
> string_to_weight(vString.toUtf8().data());
>                         // now update the ws_info
>                         changed = true;
>                         WSInfoModel *wsim = WSInfoModel::instance();
> --
> 1.8.4.2
>


More information about the subsurface mailing list