[gcalctool] Tidy up MP serializer API



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]