Commit f98c0013 authored by Sven Neumann's avatar Sven Neumann Committed by Sven Neumann
Browse files

app/config/gimpscanner.c configured the scanner to use 64bit integers.

2003-11-14  Sven Neumann  <sven@gimp.org>

	* app/config/gimpscanner.c
	* app/config/gimpconfig-deserialize.c: configured the scanner to
	use 64bit integers. This means you must now access value.v_int64
	instead of value.v_int. Fortunately gimp_scanner_parse_int() hides
	this ugly detail from you.

	* app/config/gimpconfig-params.[ch]
	* app/config/gimpconfig-types.c: derive GimpMemsize from guint64
	now that support for 64bit integers is guaranteed by glib.

	* app/config/gimpbaseconfig.c
	* app/config/gimpcoreconfig.c
	* app/config/gimpguiconfig.[ch]
	* app/widgets/gimppropwidgets.c: changed accordingly.

	* app/gui/preferences-dialog.c: changed a label.
parent 36423a24
2003-11-14 Sven Neumann <sven@gimp.org>
* app/config/gimpscanner.c
* app/config/gimpconfig-deserialize.c: configured the scanner to
use 64bit integers. This means you must now access value.v_int64
instead of value.v_int. Fortunately gimp_scanner_parse_int() hides
this ugly detail from you.
* app/config/gimpconfig-params.[ch]
* app/config/gimpconfig-types.c: derive GimpMemsize from guint64
now that support for 64bit integers is guaranteed by glib.
* app/config/gimpbaseconfig.c
* app/config/gimpcoreconfig.c
* app/config/gimpguiconfig.[ch]
* app/widgets/gimppropwidgets.c: changed accordingly.
* app/gui/preferences-dialog.c: changed a label.
2003-11-14 Michael Natterer <mitch@gimp.org>
 
* app/widgets/gimpdevices.c: code review & cleanup.
......@@ -61,7 +61,7 @@ enum
static GObjectClass *parent_class = NULL;
GType
GType
gimp_base_config_get_type (void)
{
static GType config_type = 0;
......@@ -81,8 +81,8 @@ gimp_base_config_get_type (void)
NULL /* instance_init */
};
config_type = g_type_register_static (G_TYPE_OBJECT,
"GimpBaseConfig",
config_type = g_type_register_static (G_TYPE_OBJECT,
"GimpBaseConfig",
&config_info, 0);
}
......@@ -132,7 +132,7 @@ gimp_base_config_finalize (GObject *object)
GimpBaseConfig *base_config;
base_config = GIMP_BASE_CONFIG (object);
g_free (base_config->temp_path);
g_free (base_config->swap_path);
......@@ -166,7 +166,7 @@ gimp_base_config_set_property (GObject *object,
base_config->num_processors = g_value_get_uint (value);
break;
case PROP_TILE_CACHE_SIZE:
base_config->tile_cache_size = g_value_get_ulong (value);
base_config->tile_cache_size = g_value_get_uint64 (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
......@@ -199,7 +199,7 @@ gimp_base_config_get_property (GObject *object,
g_value_set_uint (value, base_config->num_processors);
break;
case PROP_TILE_CACHE_SIZE:
g_value_set_ulong (value, base_config->tile_cache_size);
g_value_set_uint64 (value, base_config->tile_cache_size);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
......
......@@ -401,6 +401,7 @@ gimp_config_deserialize_fundamental (GValue *value,
case G_TYPE_INT:
case G_TYPE_LONG:
case G_TYPE_INT64:
if (g_scanner_peek_next_token (scanner) == '-')
{
negate = TRUE;
......@@ -409,6 +410,7 @@ gimp_config_deserialize_fundamental (GValue *value,
/* fallthrough */
case G_TYPE_UINT:
case G_TYPE_ULONG:
case G_TYPE_UINT64:
token = G_TOKEN_INT;
break;
......@@ -464,18 +466,31 @@ gimp_config_deserialize_fundamental (GValue *value,
case G_TYPE_INT:
g_value_set_int (value, (negate ?
- scanner->value.v_int : scanner->value.v_int));
- scanner->value.v_int64 :
scanner->value.v_int64));
break;
case G_TYPE_UINT:
g_value_set_uint (value, scanner->value.v_int);
g_value_set_uint (value, scanner->value.v_int64);
break;
case G_TYPE_LONG:
g_value_set_long (value, (negate ?
- scanner->value.v_int : scanner->value.v_int));
- scanner->value.v_int64 :
scanner->value.v_int64));
break;
case G_TYPE_ULONG:
g_value_set_ulong (value, scanner->value.v_int);
g_value_set_ulong (value, scanner->value.v_int64);
break;
case G_TYPE_INT64:
g_value_set_int64 (value, (negate ?
- scanner->value.v_int64 :
scanner->value.v_int64));
break;
case G_TYPE_UINT64:
g_value_set_uint64 (value, scanner->value.v_int64);
break;
case G_TYPE_FLOAT:
g_value_set_float (value, negate ?
- scanner->value.v_float : scanner->value.v_float);
......@@ -526,13 +541,14 @@ gimp_config_deserialize_enum (GValue *value,
case G_TOKEN_INT:
g_scanner_get_next_token (scanner);
enum_value = g_enum_get_value (enum_class, scanner->value.v_int);
enum_value = g_enum_get_value (enum_class,
(gint) scanner->value.v_int64);
if (!enum_value)
{
g_scanner_error (scanner,
_("invalid value '%ld' for token %s"),
scanner->value.v_int, prop_spec->name);
(glong) scanner->value.v_int64, prop_spec->name);
return G_TOKEN_NONE;
}
break;
......
......@@ -2,7 +2,7 @@
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
* ParamSpecs for config objects
* Copyright (C) 2001 Sven Neumann <sven@gimp.org>
* Copyright (C) 2001-2003 Sven Neumann <sven@gimp.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -331,11 +331,11 @@ gimp_param_memsize_get_type (void)
NULL, NULL,
(GClassInitFunc) gimp_param_memsize_class_init,
NULL, NULL,
sizeof (GParamSpecULong),
sizeof (GParamSpecUInt64),
0, NULL, NULL
};
spec_type = g_type_register_static (G_TYPE_PARAM_ULONG,
spec_type = g_type_register_static (G_TYPE_PARAM_UINT64,
"GimpParamMemsize",
&type_info, 0);
}
......@@ -353,12 +353,12 @@ GParamSpec *
gimp_param_spec_memsize (const gchar *name,
const gchar *nick,
const gchar *blurb,
gulong minimum,
gulong maximum,
gulong default_value,
guint64 minimum,
guint64 maximum,
guint64 default_value,
GParamFlags flags)
{
GParamSpecULong *pspec;
GParamSpecUInt64 *pspec;
pspec = g_param_spec_internal (GIMP_TYPE_PARAM_MEMSIZE,
name, nick, blurb, flags);
......
......@@ -95,9 +95,9 @@ GType gimp_param_memsize_get_type (void) G_GNUC_CONST;
GParamSpec * gimp_param_spec_memsize (const gchar *name,
const gchar *nick,
const gchar *blurb,
gulong minimum,
gulong maximum,
gulong default_value,
guint64 minimum,
guint64 maximum,
guint64 default_value,
GParamFlags flags);
......
......@@ -88,7 +88,7 @@ gimp_memsize_get_type (void)
{
static const GTypeInfo type_info = { 0, };
memsize_type = g_type_register_static (G_TYPE_ULONG, "GimpMemsize",
memsize_type = g_type_register_static (G_TYPE_UINT64, "GimpMemsize",
&type_info, 0);
g_value_register_transform_func (memsize_type, G_TYPE_STRING,
......@@ -104,15 +104,15 @@ gboolean
gimp_memsize_set_from_string (GValue *value,
const gchar *string)
{
gchar *end;
gulong size;
gchar *end;
guint64 size;
g_return_val_if_fail (GIMP_VALUE_HOLDS_MEMSIZE (value), FALSE);
g_return_val_if_fail (string != NULL, FALSE);
size = strtoul (string, &end, 0);
size = g_ascii_strtoull (string, &end, 0);
if (size == ULONG_MAX && errno == ERANGE)
if (size == G_MAXUINT64 && errno == ERANGE)
return FALSE;
if (end && *end)
......@@ -140,7 +140,7 @@ gimp_memsize_set_from_string (GValue *value,
/* protect against overflow */
if (shift)
{
gulong limit = G_MAXULONG >> (shift);
guint64 limit = G_MAXUINT64 >> shift;
if (size != (size & limit))
return FALSE;
......@@ -149,7 +149,7 @@ gimp_memsize_set_from_string (GValue *value,
}
}
g_value_set_ulong (value, size);
g_value_set_uint64 (value, size);
return TRUE;
}
......@@ -209,19 +209,19 @@ static void
memsize_to_string (const GValue *src_value,
GValue *dest_value)
{
gulong size;
gchar *str;
guint64 size;
gchar *str;
size = g_value_get_ulong (src_value);
size = g_value_get_uint64 (src_value);
if (size > (1 << 30) && size % (1 << 30) == 0)
str = g_strdup_printf ("%luG", size >> 30);
str = g_strdup_printf ("%" G_GUINT64_FORMAT "G", size >> 30);
else if (size > (1 << 20) && size % (1 << 20) == 0)
str = g_strdup_printf ("%luM", size >> 20);
str = g_strdup_printf ("%" G_GUINT64_FORMAT "M", size >> 20);
else if (size > (1 << 10) && size % (1 << 10) == 0)
str = g_strdup_printf ("%luk", size >> 10);
str = g_strdup_printf ("%" G_GUINT64_FORMAT "k", size >> 10);
else
str = g_strdup_printf ("%lu", size);
str = g_strdup_printf ("%" G_GUINT64_FORMAT, size);
g_value_set_string_take_ownership (dest_value, str);
}
......
......@@ -387,7 +387,7 @@ gimp_core_config_set_property (GObject *object,
core_config->levels_of_undo = g_value_get_int (value);
break;
case PROP_UNDO_SIZE:
core_config->undo_size = g_value_get_ulong (value);
core_config->undo_size = g_value_get_uint64 (value);
break;
case PROP_PLUGINRC_PATH:
g_free (core_config->plug_in_rc_path);
......@@ -482,7 +482,7 @@ gimp_core_config_get_property (GObject *object,
g_value_set_int (value, core_config->levels_of_undo);
break;
case PROP_UNDO_SIZE:
g_value_set_ulong (value, core_config->undo_size);
g_value_set_uint64 (value, core_config->undo_size);
break;
case PROP_PLUGINRC_PATH:
g_value_set_string (value, core_config->plug_in_rc_path);
......
......@@ -196,7 +196,7 @@ gimp_gui_config_class_init (GimpGuiConfigClass *klass)
GIMP_CONFIG_INSTALL_PROP_MEMSIZE (object_class, PROP_MAX_NEW_IMAGE_SIZE,
"max-new-image-size",
MAX_NEW_IMAGE_SIZE_BLURB,
0, G_MAXULONG, 1 << 26,
0, (guint64) 1 << 40, 1 << 26,
0);
GIMP_CONFIG_INSTALL_PROP_PATH (object_class, PROP_THEME_PATH,
"theme-path", THEME_PATH_BLURB,
......@@ -295,7 +295,7 @@ gimp_gui_config_set_property (GObject *object,
gui_config->last_opened_size = g_value_get_int (value);
break;
case PROP_MAX_NEW_IMAGE_SIZE:
gui_config->max_new_image_size = g_value_get_ulong (value);
gui_config->max_new_image_size = g_value_get_uint64 (value);
break;
case PROP_THEME_PATH:
g_free (gui_config->theme_path);
......@@ -380,7 +380,7 @@ gimp_gui_config_get_property (GObject *object,
g_value_set_int (value, gui_config->last_opened_size);
break;
case PROP_MAX_NEW_IMAGE_SIZE:
g_value_set_ulong (value, gui_config->max_new_image_size);
g_value_set_uint64 (value, gui_config->max_new_image_size);
break;
case PROP_THEME_PATH:
g_value_set_string (value, gui_config->theme_path);
......
......@@ -55,7 +55,7 @@ struct _GimpGuiConfig
gboolean save_accels;
gboolean restore_accels;
gint last_opened_size;
gulong max_new_image_size;
guint64 max_new_image_size;
gchar *theme_path;
gchar *theme;
gboolean use_help;
......
......@@ -147,6 +147,8 @@ gimp_scanner_new (const gchar *name,
G_CSET_DIGITS "-_" );
scanner->config->scan_identifier_1char = TRUE;
scanner->config->store_int64 = TRUE;
return scanner;
}
......@@ -216,7 +218,7 @@ gimp_scanner_parse_string (GScanner *scanner,
g_scanner_warn (scanner, _("invalid UTF-8 string"));
return FALSE;
}
*dest = g_strdup (scanner->value.v_string);
}
else
......@@ -262,9 +264,9 @@ gimp_scanner_parse_int (GScanner *scanner,
g_scanner_get_next_token (scanner);
if (negate)
*dest = -scanner->value.v_int;
*dest = -scanner->value.v_int64;
else
*dest = scanner->value.v_int;
*dest = scanner->value.v_int64;
return TRUE;
}
......
......@@ -1126,7 +1126,7 @@ prefs_dialog_new (Gimp *gimp,
table = prefs_table_new (1, GTK_CONTAINER (vbox), TRUE);
prefs_memsize_entry_add (object, "max-new-image-size",
_("Maximum Image Size:"),
_("Maximum New Image Size:"),
GTK_TABLE (table), 1);
......
......@@ -1126,7 +1126,7 @@ prefs_dialog_new (Gimp *gimp,
table = prefs_table_new (1, GTK_CONTAINER (vbox), TRUE);
prefs_memsize_entry_add (object, "max-new-image-size",
_("Maximum Image Size:"),
_("Maximum New Image Size:"),
GTK_TABLE (table), 1);
......
......@@ -836,19 +836,39 @@ gimp_prop_adjustment_callback (GtkAdjustment *adjustment,
if (G_IS_PARAM_SPEC_INT (param_spec))
{
g_object_set (config, param_spec->name, (gint) adjustment->value, NULL);
g_object_set (config,
param_spec->name, (gint) adjustment->value,
NULL);
}
else if (G_IS_PARAM_SPEC_UINT (param_spec))
{
g_object_set (config, param_spec->name, (guint) adjustment->value, NULL);
g_object_set (config,
param_spec->name, (guint) adjustment->value,
NULL);
}
else if (G_IS_PARAM_SPEC_LONG (param_spec))
{
g_object_set (config, param_spec->name, (glong) adjustment->value, NULL);
g_object_set (config,
param_spec->name, (glong) adjustment->value,
NULL);
}
else if (G_IS_PARAM_SPEC_ULONG (param_spec))
{
g_object_set (config, param_spec->name, adjustment->value, NULL);
g_object_set (config,
param_spec->name, (gulong) adjustment->value,
NULL);
}
else if (G_IS_PARAM_SPEC_INT64 (param_spec))
{
g_object_set (config,
param_spec->name, (gint64) adjustment->value,
NULL);
}
else if (G_IS_PARAM_SPEC_UINT64 (param_spec))
{
g_object_set (config,
param_spec->name, (guint64) adjustment->value,
NULL);
}
else if (G_IS_PARAM_SPEC_DOUBLE (param_spec))
{
......@@ -903,6 +923,22 @@ gimp_prop_adjustment_notify (GObject *config,
value = ulong_value;
}
else if (G_IS_PARAM_SPEC_INT64 (param_spec))
{
gint64 int64_value;
g_object_get (config, param_spec->name, &int64_value, NULL);
value = int64_value;
}
else if (G_IS_PARAM_SPEC_ULONG (param_spec))
{
guint64 uint64_value;
g_object_get (config, param_spec->name, &uint64_value, NULL);
value = uint64_value;
}
else if (G_IS_PARAM_SPEC_DOUBLE (param_spec))
{
g_object_get (config, param_spec->name, &value, NULL);
......@@ -945,10 +981,10 @@ GtkWidget *
gimp_prop_memsize_entry_new (GObject *config,
const gchar *property_name)
{
GParamSpec *param_spec;
GParamSpecULong *ulong_spec;
GtkWidget *entry;
gulong value;
GParamSpec *param_spec;
GParamSpecUInt64 *uint64_spec;
GtkWidget *entry;
guint64 value;
param_spec = check_param_spec (config, property_name,
GIMP_TYPE_PARAM_MEMSIZE, G_STRLOC);
......@@ -959,11 +995,14 @@ gimp_prop_memsize_entry_new (GObject *config,
property_name, &value,
NULL);
ulong_spec = G_PARAM_SPEC_ULONG (param_spec);
uint64_spec = G_PARAM_SPEC_UINT64 (param_spec);
g_return_val_if_fail (uint64_spec->minimum <= (guint64) G_MAXDOUBLE, NULL);
g_return_val_if_fail (uint64_spec->maximum <= (guint64) G_MAXDOUBLE, NULL);
entry = gimp_memsize_entry_new (value,
ulong_spec->minimum,
ulong_spec->maximum);
uint64_spec->minimum,
uint64_spec->maximum);
set_param_spec (G_OBJECT (entry),
GIMP_MEMSIZE_ENTRY (entry)->spinbutton,
......@@ -991,7 +1030,7 @@ gimp_prop_memsize_callback (GimpMemsizeEntry *entry,
if (! param_spec)
return;
g_return_if_fail (G_IS_PARAM_SPEC_ULONG (param_spec));
g_return_if_fail (G_IS_PARAM_SPEC_UINT64 (param_spec));
g_object_set (config,
param_spec->name, gimp_memsize_entry_get_value (entry),
......@@ -1003,9 +1042,9 @@ gimp_prop_memsize_notify (GObject *config,
GParamSpec *param_spec,
GimpMemsizeEntry *entry)
{
gulong value;
guint64 value;
g_return_if_fail (G_IS_PARAM_SPEC_ULONG (param_spec));
g_return_if_fail (G_IS_PARAM_SPEC_UINT64 (param_spec));
g_object_get (config,
param_spec->name, &value,
......
......@@ -401,6 +401,7 @@ gimp_config_deserialize_fundamental (GValue *value,
case G_TYPE_INT:
case G_TYPE_LONG:
case G_TYPE_INT64:
if (g_scanner_peek_next_token (scanner) == '-')
{
negate = TRUE;
......@@ -409,6 +410,7 @@ gimp_config_deserialize_fundamental (GValue *value,
/* fallthrough */
case G_TYPE_UINT:
case G_TYPE_ULONG:
case G_TYPE_UINT64:
token = G_TOKEN_INT;
break;
......@@ -464,18 +466,31 @@ gimp_config_deserialize_fundamental (GValue *value,
case G_TYPE_INT:
g_value_set_int (value, (negate ?
- scanner->value.v_int : scanner->value.v_int));
- scanner->value.v_int64 :
scanner->value.v_int64));
break;
case G_TYPE_UINT:
g_value_set_uint (value, scanner->value.v_int);
g_value_set_uint (value, scanner->value.v_int64);
break;
case G_TYPE_LONG:
g_value_set_long (value, (negate ?
- scanner->value.v_int : scanner->value.v_int));
- scanner->value.v_int64 :
scanner->value.v_int64));
break;
case G_TYPE_ULONG:
g_value_set_ulong (value, scanner->value.v_int);
g_value_set_ulong (value, scanner->value.v_int64);
break;
case G_TYPE_INT64:
g_value_set_int64 (value, (negate ?
- scanner->value.v_int64 :
scanner->value.v_int64));
break;
case G_TYPE_UINT64:
g_value_set_uint64 (value, scanner->value.v_int64);
break;
case G_TYPE_FLOAT:
g_value_set_float (value, negate ?
- scanner->value.v_float : scanner->value.v_float);
......@@ -526,13 +541,14 @@ gimp_config_deserialize_enum (GValue *value,
case G_TOKEN_INT:
g_scanner_get_next_token (scanner);
enum_value = g_enum_get_value (enum_class, scanner->value.v_int);
enum_value = g_enum_get_value (enum_class,
(gint) scanner->value.v_int64);
if (!enum_value)
{
g_scanner_error (scanner,
_("invalid value '%ld' for token %s"),
scanner->value.v_int, prop_spec->name);
(glong) scanner->value.v_int64, prop_spec->name);
return G_TOKEN_NONE;
}
break;
......
......@@ -95,9 +95,9 @@ GType gimp_param_memsize_get_type (void) G_GNUC_CONST;
GParamSpec * gimp_param_spec_memsize (const gchar *name,
const gchar *nick,
const gchar *blurb,
gulong minimum,
gulong maximum,
gulong default_value,
guint64 minimum,
guint64 maximum,
guint64 default_value,
GParamFlags flags);
......
......@@ -147,6 +147,8 @@ gimp_scanner_new (const gchar *name,
G_CSET_DIGITS "-_" );
scanner->config->scan_identifier_1char = TRUE;
scanner->config->store_int64 = TRUE;
return scanner;
}
......@@ -216,7 +218,7 @@ gimp_scanner_parse_string (GScanner *scanner,
g_scanner_warn (scanner, _("invalid UTF-8 string"));
return FALSE;
}
*dest = g_strdup (scanner->value.v_string);
}
else
......@@ -262,9 +264,9 @@ gimp_scanner_parse_int (GScanner *scanner,
g_scanner_get_next_token (scanner);
if (negate)
*dest = -scanner->value.v_int;
*dest = -scanner->value.v_int64;
else
*dest = scanner->value.v_int;
*dest = scanner->value.v_int64;
return TRUE;
}
......
......@@ -836,19 +836,39 @@ gimp_prop_adjustment_callback (GtkAdjustment *adjustment,
if (G_IS_PARAM_SPEC_INT (param_spec))
{
g_object_set (config, param_spec->name, (gint) adjustment->value, NULL);
g_object_set (config,
param_spec->name, (gint) adjustment->value,
NULL);
}
else if (G_IS_PARAM_SPEC_UINT (param_spec))
{
g_object_set (config, param_spec->name, (guint) adjustment->value, NULL);
g_object_set (config,
param_spec->name, (guint) adjustment->value,
NULL);
}
else if (G_IS_PARAM_SPEC_LONG (param_spec))