[gnumeric] Value: code cleanup.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Value: code cleanup.
- Date: Fri, 21 Mar 2014 19:38:43 +0000 (UTC)
commit fb94ca0bef39560cf26491a12354c1ad1f5a8230
Author: Morten Welinder <terra gnome org>
Date: Fri Mar 21 15:38:05 2014 -0400
Value: code cleanup.
Most code should not know about boolean value's internals.
plugins/excel/ms-excel-write.c | 4 ++--
plugins/excel/ms-formula-write.c | 4 ++--
plugins/excel/xls-write-pivot.c | 5 +++--
plugins/excel/xlsx-write-pivot.c | 2 +-
plugins/excel/xlsx-write.c | 31 +++++++++++++++++++++----------
plugins/excelplugins/excelplugins.c | 4 ++--
plugins/perl-loader/perl-gnumeric.c | 2 +-
plugins/python-loader/py-gnumeric.c | 4 ++--
src/collect.c | 2 +-
9 files changed, 35 insertions(+), 23 deletions(-)
---
diff --git a/plugins/excel/ms-excel-write.c b/plugins/excel/ms-excel-write.c
index 65c76a2..0ffe399 100644
--- a/plugins/excel/ms-excel-write.c
+++ b/plugins/excel/ms-excel-write.c
@@ -3382,7 +3382,7 @@ excel_write_value (ExcelWriteState *ewb, GnmValue *v, guint32 col, guint32 row,
GSF_LE_SET_GUINT8 (data + 6, excel_write_map_errcode (v));
GSF_LE_SET_GUINT8 (data + 7, 1); /* Mark as a err */
} else {
- GSF_LE_SET_GUINT8 (data + 6, v->v_bool.val ? 1 : 0);
+ GSF_LE_SET_GUINT8 (data + 6, value_get_as_int (v));
GSF_LE_SET_GUINT8 (data + 7, 0); /* Mark as a bool */
}
ms_biff_put_commit (ewb->bp);
@@ -3507,7 +3507,7 @@ excel_write_FORMULA (ExcelWriteState *ewb, ExcelWriteSheet *esheet, GnmCell cons
case VALUE_BOOLEAN:
GSF_LE_SET_GUINT32 (data + 6,
- v->v_bool.val ? 0x10001 : 0x1);
+ value_get_as_checked_bool (v) ? 0x10001 : 0x1);
GSF_LE_SET_GUINT32 (data + 10, 0xffff0000);
break;
diff --git a/plugins/excel/ms-formula-write.c b/plugins/excel/ms-formula-write.c
index 3f1b3bc..b3615db 100644
--- a/plugins/excel/ms-formula-write.c
+++ b/plugins/excel/ms-formula-write.c
@@ -774,7 +774,7 @@ write_node (PolishData *pd, GnmExpr const *expr, int paren_level,
case VALUE_BOOLEAN : {
guint8 data[2];
GSF_LE_SET_GUINT8 (data, FORMULA_PTG_BOOL);
- GSF_LE_SET_GUINT8 (data+1, v->v_bool.val ? 1 : 0);
+ GSF_LE_SET_GUINT8 (data+1, value_get_as_int (v));
ms_biff_put_var_write (pd->ewb->bp, data, 2);
break;
}
@@ -955,7 +955,7 @@ write_arrays (PolishData *pd)
push_guint32 (pd, 0);
} else if (VALUE_IS_BOOLEAN (v)) {
push_guint8 (pd, 4);
- push_guint32 (pd, v->v_bool.val ? 1 : 0);
+ push_guint32 (pd, value_get_as_int (v));
push_guint32 (pd, 0);
} else if (VALUE_IS_ERROR (v)) {
push_guint8 (pd, 16);
diff --git a/plugins/excel/xls-write-pivot.c b/plugins/excel/xls-write-pivot.c
index db6fd34..3501c09 100644
--- a/plugins/excel/xls-write-pivot.c
+++ b/plugins/excel/xls-write-pivot.c
@@ -117,7 +117,7 @@ xls_write_pivot_cache_value (ExcelWriteState *ewb, GOVal const *v)
break;
case VALUE_BOOLEAN:
- ms_biff_put_2byte (ewb->bp, BIFF_SXBOOL, v->v_bool.val);
+ ms_biff_put_2byte (ewb->bp, BIFF_SXBOOL, value_get_as_int (v));
break;
case VALUE_FLOAT: {
@@ -126,7 +126,8 @@ xls_write_pivot_cache_value (ExcelWriteState *ewb, GOVal const *v)
xls_write_pivot_cache_date_value (ewb, v);
else {
guint8 *data = ms_biff_put_len_next (ewb->bp, BIFF_SXNUM, 8);
- GSF_LE_SET_DOUBLE (data, v->v_float.val);
+ double d = value_get_as_float (v);
+ GSF_LE_SET_DOUBLE (data, d);
ms_biff_put_commit (ewb->bp);
}
break;
diff --git a/plugins/excel/xlsx-write-pivot.c b/plugins/excel/xlsx-write-pivot.c
index a133df4..a0daf21 100644
--- a/plugins/excel/xlsx-write-pivot.c
+++ b/plugins/excel/xlsx-write-pivot.c
@@ -49,7 +49,7 @@ xlsx_write_pivot_val (XLSXWriteState *state, GsfXMLOut *xml,
case VALUE_BOOLEAN:
gsf_xml_out_start_element (xml, "b");
- xlsx_add_bool (xml, "v", v->v_bool.val);
+ xlsx_add_bool (xml, "v", value_get_as_int (v));
gsf_xml_out_end_element (xml);
break;
diff --git a/plugins/excel/xlsx-write.c b/plugins/excel/xlsx-write.c
index 211b37d..a264f52 100644
--- a/plugins/excel/xlsx-write.c
+++ b/plugins/excel/xlsx-write.c
@@ -1458,11 +1458,19 @@ xlsx_write_cells (XLSXWriteState *state, GsfXMLOut *xml,
switch (val->type) {
default :
- case VALUE_EMPTY : type = NULL; break; /* FIXME : what to do ? */
- case VALUE_BOOLEAN : type = "b"; break;
- case VALUE_FLOAT : type = ""; break; /* "n" is the default */
- case VALUE_ERROR : type = "e"; break;
- case VALUE_STRING :
+ case VALUE_EMPTY:
+ type = NULL; /* FIXME : what to do ? */
+ break;
+ case VALUE_BOOLEAN:
+ type = "b";
+ break;
+ case VALUE_FLOAT:
+ type = ""; /* "n" is the default */
+ break;
+ case VALUE_ERROR:
+ type = "e";
+ break;
+ case VALUE_STRING:
/* A reasonable approximation of * 'is_shared'. It can get spoofed by
* rich text references to a base * string */
if (go_string_get_ref_count (val->v_str.val) > 1) {
@@ -1476,8 +1484,10 @@ xlsx_write_cells (XLSXWriteState *state, GsfXMLOut *xml,
} else
type = "str";
break;
- case VALUE_CELLRANGE :
- case VALUE_ARRAY : type = NULL; break; /* FIXME */
+ case VALUE_CELLRANGE:
+ case VALUE_ARRAY:
+ type = NULL; /* FIXME */
+ break;
}
if (NULL != type && *type)
@@ -1509,13 +1519,14 @@ xlsx_write_cells (XLSXWriteState *state, GsfXMLOut *xml,
if (str_id >= 0) {
gsf_xml_out_add_int (xml, NULL, str_id);
str_id = -1;
- } else if (val->type != VALUE_BOOLEAN) {
+ } else if (VALUE_IS_BOOLEAN (val)) {
+ xlsx_add_bool (xml, NULL, value_get_as_int (val));
+ } else {
GString *str = g_string_new (NULL);
value_get_as_gstring (cell->value, str, state->convs);
gsf_xml_out_add_cstr (xml, NULL, str->str);
g_string_free (str, TRUE);
- } else
- xlsx_add_bool (xml, NULL, val->v_bool.val);
+ }
gsf_xml_out_end_element (xml); /* </v> */
}
diff --git a/plugins/excelplugins/excelplugins.c b/plugins/excelplugins/excelplugins.c
index 52ffdb0..e7fe124 100644
--- a/plugins/excelplugins/excelplugins.c
+++ b/plugins/excelplugins/excelplugins.c
@@ -283,7 +283,7 @@ copy_construct_xloper_from_gnm_value (XLOPER*out, const GnmValue*in,
break;
case VALUE_BOOLEAN:
out->xltype = xltypeBool;
- out->val.boolean = (WORD)in->v_bool.val;
+ out->val.boolean = (WORD)value_get_as_checked_bool (in);
break;
case VALUE_FLOAT:
out->xltype = xltypeNum;
@@ -295,7 +295,7 @@ copy_construct_xloper_from_gnm_value (XLOPER*out, const GnmValue*in,
break;
case VALUE_STRING:
out->xltype = xltypeStr;
- out->val.str = pascal_string_from_c_string (in->v_str.val->str);
+ out->val.str = pascal_string_from_c_string (value_peek_string (in));
break;
case VALUE_CELLRANGE: {
GnmSheetRange sr;
diff --git a/plugins/perl-loader/perl-gnumeric.c b/plugins/perl-loader/perl-gnumeric.c
index d341f63..e512bc5 100644
--- a/plugins/perl-loader/perl-gnumeric.c
+++ b/plugins/perl-loader/perl-gnumeric.c
@@ -7,7 +7,7 @@ value2perl(const GnmValue *v)
switch (v->type) {
case VALUE_BOOLEAN:
- sv = newSViv(v->v_bool.val);
+ sv = newSViv(value_get_as_int (v));
break;
case VALUE_FLOAT:
diff --git a/plugins/python-loader/py-gnumeric.c b/plugins/python-loader/py-gnumeric.c
index f9e75fa..23c0d9f 100644
--- a/plugins/python-loader/py-gnumeric.c
+++ b/plugins/python-loader/py-gnumeric.c
@@ -327,13 +327,13 @@ gnm_value_to_py_obj (const GnmEvalPos *eval_pos, const GnmValue *val)
switch (val->type) {
case VALUE_BOOLEAN:
- py_val = py_new_Boolean_object (val->v_bool.val);
+ py_val = py_new_Boolean_object (value_get_as_checked_bool (val));
break;
case VALUE_FLOAT:
py_val = PyFloat_FromDouble (value_get_as_float (val));
break;
case VALUE_STRING:
- py_val = PyString_FromString (val->v_str.val->str);
+ py_val = PyString_FromString (value_peek_string (val));
break;
case VALUE_CELLRANGE:
py_val = py_new_RangeRef_object (&val->v_range.cell);
diff --git a/src/collect.c b/src/collect.c
index 03f1b9e..2cfbf48 100644
--- a/src/collect.c
+++ b/src/collect.c
@@ -335,7 +335,7 @@ callback_function_collect (GnmEvalPos const *ep, GnmValue const *value,
if (cl->flags & COLLECT_IGNORE_BOOLS)
ignore = TRUE;
else if (cl->flags & COLLECT_ZEROONE_BOOLS)
- x = (value->v_bool.val) ? 1. : 0.;
+ x = value_get_as_float (value);
else
return value_new_error_VALUE (ep);
break;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]