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

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


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