static void solve(const char *equation) { int ret; MPEquationOptions options; MPNumber z; gchar *result_str = NULL; memset(&options, 0, sizeof(options)); options.base = 10; options.wordlen = 32; options.angle_units = MP_DEGREES; ret = mp_equation_parse(equation, &options, &z, NULL); if (ret == PARSER_ERR_MP) fprintf(stderr, "Error %s\n", mp_get_error()); else if (ret) fprintf(stderr, "Error %d\n", ret); else { result_str = mp_serializer_to_string(result_serializer, &z); printf("%s\n", result_str); } g_free(result_str); }
static void registers_save(MathVariables *variables) { gchar *dir; FILE *f; GHashTableIter iter; gpointer key, val; dir = g_path_get_dirname(variables->priv->file_name); g_mkdir_with_parents(dir, 0700); g_free(dir); f = fopen(variables->priv->file_name, "w"); if (!f) return; g_hash_table_iter_init(&iter, variables->priv->registers); while (g_hash_table_iter_next(&iter, &key, &val)) { gchar *name = key; MPNumber *value = val; char *number; number = mp_serializer_to_string(variables->priv->serializer, value); fprintf(f, "%s=%s\n", name, number); g_free(number); } fclose(f); }
static void solve(const char *equation) { MPEquationOptions options; MPErrorCode error; MPNumber result; char *result_str; memset(&options, 0, sizeof(options)); options.base = 10; options.wordlen = 32; options.angle_units = MP_DEGREES; options.convert = do_convert; error = mp_equation_parse(equation, &options, &result, NULL); if(error == PARSER_ERR_MP) { fprintf(stderr, "Error: %s\n", mp_get_error()); exit(1); } else if(error != 0) { fprintf(stderr, "Error: %s\n", mp_error_code_to_string(error)); exit(1); } else { result_str = mp_serializer_to_string(mp_serializer_new(MP_DISPLAY_FORMAT_AUTOMATIC, 10, 9), &result); printf("%s\n", result_str); exit(0); } }
static GtkWidget * make_variable_entry(MathVariablePopup *popup, const gchar *name, const MPNumber *value, gboolean writable) { GtkWidget *hbox, *button, *label; gchar *text; hbox = gtk_hbox_new(FALSE, 6); if (value) { gchar *value_text = mp_serializer_to_string(math_equation_get_serializer(popup->priv->equation), value); text = g_strdup_printf("<b>%s</b> = %s", name, value_text); g_free (value_text); } else text = g_strdup_printf("<b>%s</b>", name); button = gtk_button_new(); g_object_set_data(G_OBJECT(button), "variable_name", g_strdup(name)); // FIXME: These will all leak memory g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(insert_variable_cb), popup); gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE); gtk_box_pack_start(GTK_BOX(hbox), button, TRUE, TRUE, 0); gtk_widget_show(button); label = gtk_label_new(text); g_free(text); gtk_label_set_use_markup(GTK_LABEL(label), TRUE); gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5); gtk_container_add(GTK_CONTAINER(button), label); gtk_widget_show(label); if (writable) { GtkWidget *image; button = gtk_button_new(); g_object_set_data(G_OBJECT(button), "variable_name", g_strdup(name)); image = gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_BUTTON); gtk_container_add(GTK_CONTAINER(button), image); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, TRUE, 0); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(save_variable_cb), popup); gtk_widget_show(image); gtk_widget_show(button); button = gtk_button_new(); g_object_set_data(G_OBJECT(button), "variable_name", g_strdup(name)); image = gtk_image_new_from_stock(GTK_STOCK_DELETE, GTK_ICON_SIZE_BUTTON); gtk_container_add(GTK_CONTAINER(button), image); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, TRUE, 0); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(delete_variable_cb), popup); gtk_widget_show(image); gtk_widget_show(button); } return hbox; }