[gcalctool] Tidy up MP serializer API
- From: Robert Ancell <rancell src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gcalctool] Tidy up MP serializer API
- Date: Mon, 29 Nov 2010 04:40:51 +0000 (UTC)
commit 655b47503d274449088f6c7e798ce0a1a4a08df6
Author: Robert Ancell <robert ancell canonical com>
Date: Mon Nov 29 13:44:29 2010 +1100
Tidy up MP serializer API
src/math-buttons.c | 2 +-
src/math-equation.c | 8 +++---
src/mp-serializer.c | 60 +++++++++++++++++++++++++++-----------------------
src/mp-serializer.h | 7 +++--
4 files changed, 41 insertions(+), 36 deletions(-)
---
diff --git a/src/math-buttons.c b/src/math-buttons.c
index bdf2f13..a0d096d 100644
--- a/src/math-buttons.c
+++ b/src/math-buttons.c
@@ -1374,7 +1374,7 @@ make_register_menu_item(MathButtons *buttons, const gchar *name, const MPNumber
if (value) {
MpSerializer *serializer = math_equation_get_serializer(buttons->priv->equation);
- mp_serializer_to_standard_string(serializer, value, &text);
+ text = mp_serializer_to_string(serializer, value);
mstr = g_strdup_printf("<span weight=\"bold\">%s</span> = %s", name, text);
g_free(text);
}
diff --git a/src/math-equation.c b/src/math-equation.c
index 7bbb3da..d7bc7e8 100644
--- a/src/math-equation.c
+++ b/src/math-equation.c
@@ -157,7 +157,7 @@ reformat_ans(MathEquation *equation)
gtk_text_buffer_get_iter_at_mark(GTK_TEXT_BUFFER(equation), &ans_start, equation->priv->ans_start);
gtk_text_buffer_get_iter_at_mark(GTK_TEXT_BUFFER(equation), &ans_end, equation->priv->ans_end);
orig_ans_text = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(equation), &ans_start, &ans_end, FALSE);
- mp_serializer_to_standard_string(equation->priv->serializer, &equation->priv->state.ans, &ans_text);
+ ans_text = mp_serializer_to_string(equation->priv->serializer, &equation->priv->state.ans);
if (strcmp(orig_ans_text, ans_text) != 0) {
gint start;
@@ -908,7 +908,7 @@ math_equation_set_number(MathEquation *equation, const MPNumber *x)
GtkTextIter start, end;
/* Show the number in the user chosen format */
- mp_serializer_to_standard_string(equation->priv->serializer, x, &text);
+ text = mp_serializer_to_string(equation->priv->serializer, x);
gtk_text_buffer_set_text(GTK_TEXT_BUFFER(equation), text, -1);
mp_set_from_mp(x, &equation->priv->state.ans);
@@ -988,7 +988,7 @@ void
math_equation_insert_number(MathEquation *equation, const MPNumber *x)
{
char *text;
- mp_serializer_to_standard_string(equation->priv->serializer, x, &text);
+ text = mp_serializer_to_string(equation->priv->serializer, x);
math_equation_insert(equation, text);
g_free(text);
}
@@ -1271,7 +1271,7 @@ math_equation_factorize_real(gpointer data)
MPNumber *n;
n = factor->data;
- mp_serializer_to_standard_string(equation->priv->serializer, n, &temp);
+ temp = mp_serializer_to_string(equation->priv->serializer, n);
g_string_append(text, temp);
if (factor->next)
g_string_append(text, "Ã?");
diff --git a/src/mp-serializer.c b/src/mp-serializer.c
index a5d8c2e..6df3015 100644
--- a/src/mp-serializer.c
+++ b/src/mp-serializer.c
@@ -61,9 +61,9 @@ mp_serializer_new()
static void
-mp_cast_to_string_real(MpSerializer *serializer, const MPNumber *x, int base, bool force_sign, GString *string)
+mp_cast_to_string_real(MpSerializer *serializer, const MPNumber *x, int base, gboolean force_sign, GString *string)
{
- static char digits[] = "0123456789ABCDEF";
+ static gchar digits[] = "0123456789ABCDEF";
MPNumber number, integer_component, fractional_component, temp;
int i, last_non_zero;
@@ -147,7 +147,7 @@ mp_cast_to_string_real(MpSerializer *serializer, const MPNumber *x, int base, bo
/* Append base suffix if not in default base */
if (base != serializer->priv->base) {
- const char *digits[] = {"â??", "â??", "â??", "â??", "â??", "â??", "â??", "â??", "â??", "â??"};
+ const gchar *digits[] = {"â??", "â??", "â??", "â??", "â??", "â??", "â??", "â??", "â??", "â??"};
int multiplier = 1;
int b = base;
@@ -164,26 +164,27 @@ mp_cast_to_string_real(MpSerializer *serializer, const MPNumber *x, int base, bo
}
-static void
-mp_cast_to_string(MpSerializer *serializer, const MPNumber *x, char **buffer)
+static gchar *
+mp_cast_to_string(MpSerializer *serializer, const MPNumber *x)
{
GString *string;
MPNumber x_real;
+ gchar *result;
string = g_string_sized_new(1024);
mp_real_component(x, &x_real);
- mp_cast_to_string_real(serializer, &x_real, serializer->priv->base, false, string);
+ mp_cast_to_string_real(serializer, &x_real, serializer->priv->base, FALSE, string);
if (mp_is_complex(x)) {
GString *s;
- gboolean force_sign = true;
+ gboolean force_sign = TRUE;
MPNumber x_im;
mp_imaginary_component(x, &x_im);
if (strcmp(string->str, "0") == 0) {
g_string_assign(string, "");
- force_sign = false;
+ force_sign = FALSE;
}
s = g_string_sized_new(1024);
@@ -211,19 +212,22 @@ mp_cast_to_string(MpSerializer *serializer, const MPNumber *x, char **buffer)
g_string_free(s, TRUE);
}
- *buffer = g_strndup(string->str, string->len + 1);
+ result = g_strndup(string->str, string->len + 1);
g_string_free(string, TRUE);
+
+ return result;
}
-static void
-mp_cast_to_exponential_string(MpSerializer *serializer, const MPNumber *x, bool eng_format, char **buffer)
+static gchar *
+mp_cast_to_exponential_string(MpSerializer *serializer, const MPNumber *x, gboolean eng_format)
{
- char *fixed, *c;
+ gchar *fixed, *c;
MPNumber t, z, base, base3, base10, base10inv, mantissa;
int exponent = 0;
GString *string;
- const char *super_digits[] = {"�", "¹", "²", "³", "�", "�", "�", "�", "�", "�"};
+ gchar *result;
+ const gchar *super_digits[] = {"�", "¹", "²", "³", "�", "�", "�", "�", "�", "�"};
string = g_string_sized_new(1024);
@@ -262,7 +266,7 @@ mp_cast_to_exponential_string(MpSerializer *serializer, const MPNumber *x, bool
}
}
- mp_cast_to_string(serializer, &mantissa, &fixed);
+ fixed = mp_cast_to_string(serializer, &mantissa);
g_string_append(string, fixed);
g_free(fixed);
if (exponent != 0) {
@@ -276,46 +280,46 @@ mp_cast_to_exponential_string(MpSerializer *serializer, const MPNumber *x, bool
g_string_append(string, super_digits[*c - '0']);
}
- *buffer = g_strndup(string->str, string->len + 1);
+ result = g_strndup(string->str, string->len + 1);
g_string_free(string, TRUE);
+
+ return result;
}
-void
-mp_serializer_to_standard_string(MpSerializer *serializer, const MPNumber *x, char **target)
+gchar *
+mp_serializer_to_string(MpSerializer *serializer, const MPNumber *x)
{
switch(serializer->priv->format) {
+ default:
case FIX:
- mp_cast_to_string(serializer, x, target);
- break;
+ return mp_cast_to_string(serializer, x);
case SCI:
- mp_cast_to_exponential_string(serializer, x, false, target);
- break;
+ return mp_cast_to_exponential_string(serializer, x, FALSE);
case ENG:
- mp_cast_to_exponential_string(serializer, x, true, target);
- break;
+ return mp_cast_to_exponential_string(serializer, x, TRUE);
}
}
void
-mp_serializer_to_specific_string(const MPNumber *x, int base, int accuracy, bool trim_zeroes, bool localize, char **target)
+mp_serializer_to_specific_string(const MPNumber *x, int base, int accuracy, gboolean trim_zeroes, gboolean localize, gchar **target)
{
MpSerializer *serializer = mp_serializer_new();
if (!localize) {
serializer->priv->radix = '.';
- serializer->priv->show_tsep = false;
+ serializer->priv->show_tsep = FALSE;
}
serializer->priv->base = base;
serializer->priv->accuracy = accuracy;
serializer->priv->show_zeroes = !trim_zeroes;
- mp_serializer_to_standard_string(serializer, x, target);
+ *target = mp_serializer_to_string(serializer, x);
g_object_unref(serializer);
}
-bool
-mp_serializer_from_string(MpSerializer *serializer, const char *str, MPNumber *z)
+gboolean
+mp_serializer_from_string(MpSerializer *serializer, const gchar *str, MPNumber *z)
{
return mp_set_from_string(str, serializer->priv->base, z);
}
diff --git a/src/mp-serializer.h b/src/mp-serializer.h
index 4f4bac9..bee4260 100644
--- a/src/mp-serializer.h
+++ b/src/mp-serializer.h
@@ -50,9 +50,10 @@ typedef enum {
GType mp_serializer_get_type(void);
MpSerializer *mp_serializer_new(void);
-void mp_serializer_to_standard_string(MpSerializer *serializer, const MPNumber *z, char **target);
-void mp_serializer_to_specific_string(const MPNumber *z, int base, int accuracy, bool trim_zeroes, bool localize, char **target);
-bool mp_serializer_from_string(MpSerializer *serializer, const char *str, MPNumber *z);
+void mp_serializer_to_specific_string(const MPNumber *z, int base, int accuracy, gboolean trim_zeroes, gboolean localize, char **target);
+
+gchar *mp_serializer_to_string(MpSerializer *serializer, const MPNumber *z);
+gboolean mp_serializer_from_string(MpSerializer *serializer, const gchar *str, MPNumber *z);
gunichar mp_serializer_get_thousands_separator_text(MpSerializer *serializer);
gint mp_serializer_get_thousands_separator_count(MpSerializer *serializer);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]