begin the parameter elipsis (...) after the first argument name. this

Mon Aug 24 02:36:53 1998  Tim Janik  <timj@gtk.org>

        * gtk/gtkarg.h:
        * gtk/gtkarg.c:
        * gtk/gtkwidget.h:
        * gtk/gtkwidget.c:
        * gtk/gtkobject.h:
        * gtk/gtkobject.c:
        * gtk/gtkcontainer.h:
        * gtk/gtkcontainer.c:
        (gtk_object_new):
        (gtk_object_set):
        (gtk_widget_new):
        (gtk_widget_set):
        (gtk_container_add_with_args):
        (gtk_container_child_set):
        begin the parameter elipsis (...) after the first argument name. this
        change is source compatible, since it was always required, even as NULL.
        (gtk_args_collect):
        (gtk_object_args_collect):
        (gtk_container_child_args_collect):
        changed prototypes to pass first_arg_name, also, pass va_list variable
        by value (portability concerns). callers changed.

        * gtk/gtkargcollector.c: implemented gtk_arg_collect_value() as
        a huge macro GTK_ARG_COLLECT_VALUE() <shrug>. this is needed because we
        can't pass va_list variables by reference for portability reasons.
This commit is contained in:
Tim Janik 1998-08-24 05:27:29 +00:00 committed by Tim Janik
parent db10ace6c8
commit 02a871bc31
18 changed files with 403 additions and 176 deletions

View File

@ -1,3 +1,31 @@
Mon Aug 24 02:36:53 1998 Tim Janik <timj@gtk.org>
* gtk/gtkarg.h:
* gtk/gtkarg.c:
* gtk/gtkwidget.h:
* gtk/gtkwidget.c:
* gtk/gtkobject.h:
* gtk/gtkobject.c:
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c:
(gtk_object_new):
(gtk_object_set):
(gtk_widget_new):
(gtk_widget_set):
(gtk_container_add_with_args):
(gtk_container_child_set):
begin the parameter elipsis (...) after the first argument name. this
change is source compatible, since it was always required, even as NULL.
(gtk_args_collect):
(gtk_object_args_collect):
(gtk_container_child_args_collect):
changed prototypes to pass first_arg_name, also, pass va_list variable
by value (portability concerns). callers changed.
* gtk/gtkargcollector.c: implemented gtk_arg_collect_value() as
a huge macro GTK_ARG_COLLECT_VALUE() <shrug>. this is needed because we
can't pass va_list variables by reference for portability reasons.
Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org> Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org>
* gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and * gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and

View File

@ -1,3 +1,31 @@
Mon Aug 24 02:36:53 1998 Tim Janik <timj@gtk.org>
* gtk/gtkarg.h:
* gtk/gtkarg.c:
* gtk/gtkwidget.h:
* gtk/gtkwidget.c:
* gtk/gtkobject.h:
* gtk/gtkobject.c:
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c:
(gtk_object_new):
(gtk_object_set):
(gtk_widget_new):
(gtk_widget_set):
(gtk_container_add_with_args):
(gtk_container_child_set):
begin the parameter elipsis (...) after the first argument name. this
change is source compatible, since it was always required, even as NULL.
(gtk_args_collect):
(gtk_object_args_collect):
(gtk_container_child_args_collect):
changed prototypes to pass first_arg_name, also, pass va_list variable
by value (portability concerns). callers changed.
* gtk/gtkargcollector.c: implemented gtk_arg_collect_value() as
a huge macro GTK_ARG_COLLECT_VALUE() <shrug>. this is needed because we
can't pass va_list variables by reference for portability reasons.
Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org> Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org>
* gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and * gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and

View File

@ -1,3 +1,31 @@
Mon Aug 24 02:36:53 1998 Tim Janik <timj@gtk.org>
* gtk/gtkarg.h:
* gtk/gtkarg.c:
* gtk/gtkwidget.h:
* gtk/gtkwidget.c:
* gtk/gtkobject.h:
* gtk/gtkobject.c:
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c:
(gtk_object_new):
(gtk_object_set):
(gtk_widget_new):
(gtk_widget_set):
(gtk_container_add_with_args):
(gtk_container_child_set):
begin the parameter elipsis (...) after the first argument name. this
change is source compatible, since it was always required, even as NULL.
(gtk_args_collect):
(gtk_object_args_collect):
(gtk_container_child_args_collect):
changed prototypes to pass first_arg_name, also, pass va_list variable
by value (portability concerns). callers changed.
* gtk/gtkargcollector.c: implemented gtk_arg_collect_value() as
a huge macro GTK_ARG_COLLECT_VALUE() <shrug>. this is needed because we
can't pass va_list variables by reference for portability reasons.
Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org> Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org>
* gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and * gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and

View File

@ -1,3 +1,31 @@
Mon Aug 24 02:36:53 1998 Tim Janik <timj@gtk.org>
* gtk/gtkarg.h:
* gtk/gtkarg.c:
* gtk/gtkwidget.h:
* gtk/gtkwidget.c:
* gtk/gtkobject.h:
* gtk/gtkobject.c:
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c:
(gtk_object_new):
(gtk_object_set):
(gtk_widget_new):
(gtk_widget_set):
(gtk_container_add_with_args):
(gtk_container_child_set):
begin the parameter elipsis (...) after the first argument name. this
change is source compatible, since it was always required, even as NULL.
(gtk_args_collect):
(gtk_object_args_collect):
(gtk_container_child_args_collect):
changed prototypes to pass first_arg_name, also, pass va_list variable
by value (portability concerns). callers changed.
* gtk/gtkargcollector.c: implemented gtk_arg_collect_value() as
a huge macro GTK_ARG_COLLECT_VALUE() <shrug>. this is needed because we
can't pass va_list variables by reference for portability reasons.
Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org> Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org>
* gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and * gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and

View File

@ -1,3 +1,31 @@
Mon Aug 24 02:36:53 1998 Tim Janik <timj@gtk.org>
* gtk/gtkarg.h:
* gtk/gtkarg.c:
* gtk/gtkwidget.h:
* gtk/gtkwidget.c:
* gtk/gtkobject.h:
* gtk/gtkobject.c:
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c:
(gtk_object_new):
(gtk_object_set):
(gtk_widget_new):
(gtk_widget_set):
(gtk_container_add_with_args):
(gtk_container_child_set):
begin the parameter elipsis (...) after the first argument name. this
change is source compatible, since it was always required, even as NULL.
(gtk_args_collect):
(gtk_object_args_collect):
(gtk_container_child_args_collect):
changed prototypes to pass first_arg_name, also, pass va_list variable
by value (portability concerns). callers changed.
* gtk/gtkargcollector.c: implemented gtk_arg_collect_value() as
a huge macro GTK_ARG_COLLECT_VALUE() <shrug>. this is needed because we
can't pass va_list variables by reference for portability reasons.
Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org> Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org>
* gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and * gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and

View File

@ -1,3 +1,31 @@
Mon Aug 24 02:36:53 1998 Tim Janik <timj@gtk.org>
* gtk/gtkarg.h:
* gtk/gtkarg.c:
* gtk/gtkwidget.h:
* gtk/gtkwidget.c:
* gtk/gtkobject.h:
* gtk/gtkobject.c:
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c:
(gtk_object_new):
(gtk_object_set):
(gtk_widget_new):
(gtk_widget_set):
(gtk_container_add_with_args):
(gtk_container_child_set):
begin the parameter elipsis (...) after the first argument name. this
change is source compatible, since it was always required, even as NULL.
(gtk_args_collect):
(gtk_object_args_collect):
(gtk_container_child_args_collect):
changed prototypes to pass first_arg_name, also, pass va_list variable
by value (portability concerns). callers changed.
* gtk/gtkargcollector.c: implemented gtk_arg_collect_value() as
a huge macro GTK_ARG_COLLECT_VALUE() <shrug>. this is needed because we
can't pass va_list variables by reference for portability reasons.
Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org> Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org>
* gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and * gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and

View File

@ -1,3 +1,31 @@
Mon Aug 24 02:36:53 1998 Tim Janik <timj@gtk.org>
* gtk/gtkarg.h:
* gtk/gtkarg.c:
* gtk/gtkwidget.h:
* gtk/gtkwidget.c:
* gtk/gtkobject.h:
* gtk/gtkobject.c:
* gtk/gtkcontainer.h:
* gtk/gtkcontainer.c:
(gtk_object_new):
(gtk_object_set):
(gtk_widget_new):
(gtk_widget_set):
(gtk_container_add_with_args):
(gtk_container_child_set):
begin the parameter elipsis (...) after the first argument name. this
change is source compatible, since it was always required, even as NULL.
(gtk_args_collect):
(gtk_object_args_collect):
(gtk_container_child_args_collect):
changed prototypes to pass first_arg_name, also, pass va_list variable
by value (portability concerns). callers changed.
* gtk/gtkargcollector.c: implemented gtk_arg_collect_value() as
a huge macro GTK_ARG_COLLECT_VALUE() <shrug>. this is needed because we
can't pass va_list variables by reference for portability reasons.
Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org> Fri Aug 21 22:40:00 Raph Levien <raph@gtk.org>
* gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and * gdk/gdkrgb.c: added calls to gdk_rgb_init in the get_cmap and

View File

@ -233,12 +233,12 @@ gtk_args_collect (GtkType object_type,
GHashTable *arg_info_hash_table, GHashTable *arg_info_hash_table,
GSList **arg_list_p, GSList **arg_list_p,
GSList **info_list_p, GSList **info_list_p,
gpointer var_args_p) const gchar *first_arg_name,
va_list var_args)
{ {
GSList *arg_list; GSList *arg_list;
GSList *info_list; GSList *info_list;
gchar *arg_name; const gchar *arg_name;
va_list *var_args = var_args_p;
g_return_val_if_fail (arg_list_p != NULL, NULL); g_return_val_if_fail (arg_list_p != NULL, NULL);
*arg_list_p = NULL; *arg_list_p = NULL;
@ -248,7 +248,7 @@ gtk_args_collect (GtkType object_type,
arg_list = NULL; arg_list = NULL;
info_list = NULL; info_list = NULL;
arg_name = va_arg (*var_args, gchar*); arg_name = first_arg_name;
while (arg_name) while (arg_name)
{ {
GtkArgInfo *info = NULL; GtkArgInfo *info = NULL;
@ -262,8 +262,8 @@ gtk_args_collect (GtkType object_type,
info_list = g_slist_prepend (info_list, info); info_list = g_slist_prepend (info_list, info);
arg = gtk_arg_new (info->type); arg = gtk_arg_new (info->type);
arg->name = arg_name; arg->name = (gchar*) arg_name;
error = gtk_arg_collect_value (GTK_FUNDAMENTAL_TYPE (arg->type), arg, var_args); GTK_ARG_COLLECT_VALUE (GTK_FUNDAMENTAL_TYPE (arg->type), arg, var_args, error);
arg_list = g_slist_prepend (arg_list, arg); arg_list = g_slist_prepend (arg_list, arg);
} }
if (error) if (error)
@ -273,7 +273,7 @@ gtk_args_collect (GtkType object_type,
return error; return error;
} }
arg_name = va_arg (*var_args, gchar*); arg_name = va_arg (var_args, gchar*);
} }
*arg_list_p = g_slist_reverse (arg_list); *arg_list_p = g_slist_reverse (arg_list);

View File

@ -60,7 +60,8 @@ gchar* gtk_args_collect (GtkType object_type,
GHashTable *arg_info_hash_table, GHashTable *arg_info_hash_table,
GSList **arg_list_p, GSList **arg_list_p,
GSList **info_list_p, GSList **info_list_p,
gpointer var_args_p); const gchar *first_arg_name,
va_list var_args);
void gtk_args_collect_cleanup (GSList *arg_list, void gtk_args_collect_cleanup (GSList *arg_list,
GSList *info_list); GSList *info_list);
gchar* gtk_arg_get_info (GtkType object_type, gchar* gtk_arg_get_info (GtkType object_type,

View File

@ -17,144 +17,149 @@
* Boston, MA 02111-1307, USA. * Boston, MA 02111-1307, USA.
*/ */
/* collect a single argument value from a va_list /* collect a single argument value from a va_list.
* this is implemented as a huge macro <shrug>, because we can't
* pass va_list variables by reference on some systems.
* the former prototype was:
* static inline gchar*
* gtk_arg_collect_value (GtkType fundamental_type,
* GtkArg *arg,
* va_list var_args);
*/ */
static inline gchar* #define GTK_ARG_COLLECT_VALUE(_ft, arg, var_args, _error) \
gtk_arg_collect_value (GtkType fundamental_type, G_STMT_START { \
GtkArg *arg, GtkType fundamental_type = _ft; \
va_list *var_args) gchar *error_msg; \
{ \
gchar *error_msg; error_msg = NULL; \
switch (fundamental_type) \
error_msg = NULL; { \
switch (fundamental_type) case GTK_TYPE_INVALID: \
{ error_msg = g_strdup ("invalid untyped argument"); \
case GTK_TYPE_INVALID: break; \
error_msg = g_strdup ("invalid untyped argument"); \
break; case GTK_TYPE_NONE: \
/* we just ignore this type, since it arithmetically just requires \
case GTK_TYPE_NONE: * us to not move the var_args pointer any further. callers need to \
/* we just ignore this type, since it arithmetically just requires * check for the validity of GTK_TYPE_NONE themselves. \
* us to not move the var_args pointer any further. callers need to * \
* check for the validity of GTK_TYPE_NONE themselves. * error_msg = g_strdup ("invalid argument type `void'"); \
* */ \
* error_msg = g_strdup ("invalid argument type `void'"); break; \
*/ \
break; /* everything smaller than an int is guarranteed to be \
* passed as an int \
/* everything smaller than an int is guarranteed to be */ \
* passed as an int case GTK_TYPE_CHAR: \
*/ GTK_VALUE_CHAR (*arg) = va_arg (var_args, gint); \
case GTK_TYPE_CHAR: break; \
GTK_VALUE_CHAR (*arg) = va_arg (*var_args, gint); case GTK_TYPE_UCHAR: \
break; GTK_VALUE_UCHAR (*arg) = va_arg (var_args, guint); \
case GTK_TYPE_UCHAR: break; \
GTK_VALUE_UCHAR (*arg) = va_arg (*var_args, guint); case GTK_TYPE_BOOL: \
break; GTK_VALUE_BOOL (*arg) = va_arg (var_args, gint); \
case GTK_TYPE_BOOL: break; \
GTK_VALUE_BOOL (*arg) = va_arg (*var_args, gint); case GTK_TYPE_INT: \
break; GTK_VALUE_INT (*arg) = va_arg (var_args, gint); \
case GTK_TYPE_INT: break; \
GTK_VALUE_INT (*arg) = va_arg (*var_args, gint); case GTK_TYPE_UINT: \
break; GTK_VALUE_UINT (*arg) = va_arg (var_args, guint); \
case GTK_TYPE_UINT: break; \
GTK_VALUE_UINT (*arg) = va_arg (*var_args, guint); case GTK_TYPE_ENUM: \
break; GTK_VALUE_ENUM (*arg) = va_arg (var_args, gint); \
case GTK_TYPE_ENUM: break; \
GTK_VALUE_ENUM (*arg) = va_arg (*var_args, gint); case GTK_TYPE_FLAGS: \
break; GTK_VALUE_FLAGS (*arg) = va_arg (var_args, guint); \
case GTK_TYPE_FLAGS: break; \
GTK_VALUE_FLAGS (*arg) = va_arg (*var_args, guint); \
break; /* we collect longs as glongs since they differ in size with \
* integers on some platforms \
/* we collect longs as glongs since they differ in size with */ \
* integers on some platforms case GTK_TYPE_LONG: \
*/ GTK_VALUE_LONG (*arg) = va_arg (var_args, glong); \
case GTK_TYPE_LONG: break; \
GTK_VALUE_LONG (*arg) = va_arg (*var_args, glong); case GTK_TYPE_ULONG: \
break; GTK_VALUE_ULONG (*arg) = va_arg (var_args, gulong); \
case GTK_TYPE_ULONG: break; \
GTK_VALUE_ULONG (*arg) = va_arg (*var_args, gulong); \
break; /* floats are always passed as doubles \
*/ \
/* floats are always passed as doubles case GTK_TYPE_FLOAT: \
*/ /* GTK_VALUE_FLOAT (*arg) = va_arg (var_args, gfloat); */ \
case GTK_TYPE_FLOAT: GTK_VALUE_FLOAT (*arg) = va_arg (var_args, gdouble); \
/* GTK_VALUE_FLOAT (*arg) = va_arg (*var_args, gfloat); */ break; \
GTK_VALUE_FLOAT (*arg) = va_arg (*var_args, gdouble); case GTK_TYPE_DOUBLE: \
break; GTK_VALUE_DOUBLE (*arg) = va_arg (var_args, gdouble); \
case GTK_TYPE_DOUBLE: break; \
GTK_VALUE_DOUBLE (*arg) = va_arg (*var_args, gdouble); \
break; /* collect pointer values \
*/ \
/* collect pointer values case GTK_TYPE_STRING: \
*/ GTK_VALUE_STRING (*arg) = va_arg (var_args, gchar*); \
case GTK_TYPE_STRING: break; \
GTK_VALUE_STRING (*arg) = va_arg (*var_args, gchar*); case GTK_TYPE_POINTER: \
break; GTK_VALUE_POINTER (*arg) = va_arg (var_args, gpointer); \
case GTK_TYPE_POINTER: break; \
GTK_VALUE_POINTER (*arg) = va_arg (*var_args, gpointer); case GTK_TYPE_BOXED: \
break; GTK_VALUE_BOXED (*arg) = va_arg (var_args, gpointer); \
case GTK_TYPE_BOXED: break; \
GTK_VALUE_BOXED (*arg) = va_arg (*var_args, gpointer); \
break; /* structured types \
*/ \
/* structured types case GTK_TYPE_SIGNAL: \
*/ GTK_VALUE_SIGNAL (*arg).f = va_arg (var_args, GtkSignalFunc); \
case GTK_TYPE_SIGNAL: GTK_VALUE_SIGNAL (*arg).d = va_arg (var_args, gpointer); \
GTK_VALUE_SIGNAL (*arg).f = va_arg (*var_args, GtkSignalFunc); break; \
GTK_VALUE_SIGNAL (*arg).d = va_arg (*var_args, gpointer); case GTK_TYPE_ARGS: \
break; GTK_VALUE_ARGS (*arg).n_args = va_arg (var_args, gint); \
case GTK_TYPE_ARGS: GTK_VALUE_ARGS (*arg).args = va_arg (var_args, GtkArg*); \
GTK_VALUE_ARGS (*arg).n_args = va_arg (*var_args, gint); break; \
GTK_VALUE_ARGS (*arg).args = va_arg (*var_args, GtkArg*); case GTK_TYPE_FOREIGN: \
break; GTK_VALUE_FOREIGN (*arg).data = va_arg (var_args, gpointer); \
case GTK_TYPE_FOREIGN: GTK_VALUE_FOREIGN (*arg).notify = va_arg (var_args, GtkDestroyNotify); \
GTK_VALUE_FOREIGN (*arg).data = va_arg (*var_args, gpointer); break; \
GTK_VALUE_FOREIGN (*arg).notify = va_arg (*var_args, GtkDestroyNotify); case GTK_TYPE_CALLBACK: \
break; GTK_VALUE_CALLBACK (*arg).marshal = va_arg (var_args, GtkCallbackMarshal); \
case GTK_TYPE_CALLBACK: GTK_VALUE_CALLBACK (*arg).data = va_arg (var_args, gpointer); \
GTK_VALUE_CALLBACK (*arg).marshal = va_arg (*var_args, GtkCallbackMarshal); GTK_VALUE_CALLBACK (*arg).notify = va_arg (var_args, GtkDestroyNotify); \
GTK_VALUE_CALLBACK (*arg).data = va_arg (*var_args, gpointer); break; \
GTK_VALUE_CALLBACK (*arg).notify = va_arg (*var_args, GtkDestroyNotify); case GTK_TYPE_C_CALLBACK: \
break; GTK_VALUE_C_CALLBACK (*arg).func = va_arg (var_args, GtkFunction); \
case GTK_TYPE_C_CALLBACK: GTK_VALUE_C_CALLBACK (*arg).func_data = va_arg (var_args, gpointer); \
GTK_VALUE_C_CALLBACK (*arg).func = va_arg (*var_args, GtkFunction); break; \
GTK_VALUE_C_CALLBACK (*arg).func_data = va_arg (*var_args, gpointer); \
break; /* we do some extra sanity checking when collecting objects, \
* i.e. if the object pointer is not NULL, we check whether we \
/* we do some extra sanity checking when collecting objects, * actually got an object pointer within the desired class branch. \
* i.e. if the object pointer is not NULL, we check whether we */ \
* actually got an object pointer within the desired class branch. case GTK_TYPE_OBJECT: \
*/ GTK_VALUE_OBJECT (*arg) = va_arg (var_args, GtkObject*); \
case GTK_TYPE_OBJECT: if (GTK_VALUE_OBJECT (*arg) != NULL) \
GTK_VALUE_OBJECT (*arg) = va_arg (*var_args, GtkObject*); { \
if (GTK_VALUE_OBJECT (*arg) != NULL) register GtkObject *object = GTK_VALUE_OBJECT (*arg); \
{ \
register GtkObject *object = GTK_VALUE_OBJECT (*arg); if (object->klass == NULL) \
error_msg = g_strconcat ("invalid unclassed object pointer for argument type `", \
if (object->klass == NULL) gtk_type_name (arg->type), \
error_msg = g_strconcat ("invalid unclassed object pointer for argument type `", "'", \
gtk_type_name (arg->type), NULL); \
"'", else if (!gtk_type_is_a (GTK_OBJECT_TYPE (object), arg->type)) \
NULL); error_msg = g_strconcat ("invalid object `", \
else if (!gtk_type_is_a (GTK_OBJECT_TYPE (object), arg->type)) gtk_type_name (GTK_OBJECT_TYPE (object)), \
error_msg = g_strconcat ("invalid object `", "' for argument type `", \
gtk_type_name (GTK_OBJECT_TYPE (object)), gtk_type_name (arg->type), \
"' for argument type `", "'", \
gtk_type_name (arg->type), NULL); \
"'", } \
NULL); break; \
} \
break; default: \
error_msg = g_strconcat ("unsupported argument type `", \
default: gtk_type_name (arg->type), \
error_msg = g_strconcat ("unsupported argument type `", "'", \
gtk_type_name (arg->type), NULL); \
"'", break; \
NULL); } \
break; \
} _error = error_msg; /* return error_msg; */ \
} G_STMT_END
return error_msg;
}

View File

@ -250,6 +250,7 @@ gtk_container_child_type (GtkContainer *container)
void void
gtk_container_add_with_args (GtkContainer *container, gtk_container_add_with_args (GtkContainer *container,
GtkWidget *widget, GtkWidget *widget,
const gchar *first_arg_name,
...) ...)
{ {
g_return_if_fail (container != NULL); g_return_if_fail (container != NULL);
@ -270,11 +271,12 @@ gtk_container_add_with_args (GtkContainer *container,
GSList *info_list = NULL; GSList *info_list = NULL;
gchar *error; gchar *error;
va_start (var_args, widget); va_start (var_args, first_arg_name);
error = gtk_container_child_args_collect (GTK_OBJECT_TYPE (container), error = gtk_container_child_args_collect (GTK_OBJECT_TYPE (container),
&arg_list, &arg_list,
&info_list, &info_list,
&var_args); first_arg_name,
var_args);
va_end (var_args); va_end (var_args);
if (error) if (error)
@ -375,6 +377,7 @@ gtk_container_child_getv (GtkContainer *container,
void void
gtk_container_child_set (GtkContainer *container, gtk_container_child_set (GtkContainer *container,
GtkWidget *child, GtkWidget *child,
const gchar *first_arg_name,
...) ...)
{ {
va_list var_args; va_list var_args;
@ -388,11 +391,12 @@ gtk_container_child_set (GtkContainer *container,
g_return_if_fail (GTK_IS_WIDGET (child)); g_return_if_fail (GTK_IS_WIDGET (child));
g_return_if_fail (child->parent != NULL); g_return_if_fail (child->parent != NULL);
va_start (var_args, child); va_start (var_args, first_arg_name);
error = gtk_container_child_args_collect (GTK_OBJECT_TYPE (container), error = gtk_container_child_args_collect (GTK_OBJECT_TYPE (container),
&arg_list, &arg_list,
&info_list, &info_list,
&var_args); first_arg_name,
var_args);
va_end (var_args); va_end (var_args);
if (error) if (error)
@ -541,13 +545,15 @@ gchar*
gtk_container_child_args_collect (GtkType object_type, gtk_container_child_args_collect (GtkType object_type,
GSList **arg_list_p, GSList **arg_list_p,
GSList **info_list_p, GSList **info_list_p,
gpointer var_args_p) const gchar *first_arg_name,
va_list var_args)
{ {
return gtk_args_collect (object_type, return gtk_args_collect (object_type,
container_child_arg_info_ht, container_child_arg_info_ht,
arg_list_p, arg_list_p,
info_list_p, info_list_p,
var_args_p); first_arg_name,
var_args);
} }
gchar* gchar*

View File

@ -174,6 +174,7 @@ void gtk_container_child_setv (GtkContainer *container,
*/ */
void gtk_container_add_with_args (GtkContainer *container, void gtk_container_add_with_args (GtkContainer *container,
GtkWidget *widget, GtkWidget *widget,
const gchar *first_arg_name,
...); ...);
void gtk_container_addv (GtkContainer *container, void gtk_container_addv (GtkContainer *container,
GtkWidget *widget, GtkWidget *widget,
@ -181,6 +182,7 @@ void gtk_container_addv (GtkContainer *container,
GtkArg *args); GtkArg *args);
void gtk_container_child_set (GtkContainer *container, void gtk_container_child_set (GtkContainer *container,
GtkWidget *child, GtkWidget *child,
const gchar *first_arg_name,
...); ...);
@ -199,7 +201,8 @@ void gtk_container_arg_get (GtkContainer *container,
gchar* gtk_container_child_args_collect (GtkType object_type, gchar* gtk_container_child_args_collect (GtkType object_type,
GSList **arg_list_p, GSList **arg_list_p,
GSList **info_list_p, GSList **info_list_p,
gpointer var_args_p); const gchar *first_arg_name,
va_list args);
gchar* gtk_container_child_arg_get_info (GtkType object_type, gchar* gtk_container_child_arg_get_info (GtkType object_type,
const gchar *arg_name, const gchar *arg_name,
GtkArgInfo **info_p); GtkArgInfo **info_p);

View File

@ -1481,7 +1481,7 @@ gtk_item_factory_parse_statement (GScanner *scanner,
parser_func = scanner->value.v_symbol; parser_func = scanner->value.v_symbol;
/* check whether this is a GtkItemFactory symbol... /* check whether this is a GtkItemFactory symbol.
*/ */
if (parser_func == gtk_item_factory_parse_menu_path) if (parser_func == gtk_item_factory_parse_menu_path)
expected_token = parser_func (scanner, class); expected_token = parser_func (scanner, class);

View File

@ -621,7 +621,8 @@ gtk_object_notify_weaks (GtkObject *object)
****************************************************/ ****************************************************/
GtkObject* GtkObject*
gtk_object_new (GtkType object_type, gtk_object_new (GtkType object_type,
const gchar *first_arg_name,
...) ...)
{ {
GtkObject *object; GtkObject *object;
@ -634,11 +635,12 @@ gtk_object_new (GtkType object_type,
object = gtk_type_new (object_type); object = gtk_type_new (object_type);
va_start (var_args, object_type); va_start (var_args, first_arg_name);
error = gtk_object_args_collect (GTK_OBJECT_TYPE (object), error = gtk_object_args_collect (GTK_OBJECT_TYPE (object),
&arg_list, &arg_list,
&info_list, &info_list,
&var_args); first_arg_name,
var_args);
va_end (var_args); va_end (var_args);
if (error) if (error)
@ -719,6 +721,7 @@ gtk_object_getv (GtkObject *object,
void void
gtk_object_set (GtkObject *object, gtk_object_set (GtkObject *object,
const gchar *first_arg_name,
...) ...)
{ {
va_list var_args; va_list var_args;
@ -729,11 +732,12 @@ gtk_object_set (GtkObject *object,
g_return_if_fail (object != NULL); g_return_if_fail (object != NULL);
g_return_if_fail (GTK_IS_OBJECT (object)); g_return_if_fail (GTK_IS_OBJECT (object));
va_start (var_args, object); va_start (var_args, first_arg_name);
error = gtk_object_args_collect (GTK_OBJECT_TYPE (object), error = gtk_object_args_collect (GTK_OBJECT_TYPE (object),
&arg_list, &arg_list,
&info_list, &info_list,
&var_args); first_arg_name,
var_args);
va_end (var_args); va_end (var_args);
if (error) if (error)
@ -878,13 +882,15 @@ gchar*
gtk_object_args_collect (GtkType object_type, gtk_object_args_collect (GtkType object_type,
GSList **arg_list_p, GSList **arg_list_p,
GSList **info_list_p, GSList **info_list_p,
gpointer var_args_p) const gchar *first_arg_name,
va_list var_args)
{ {
return gtk_args_collect (object_type, return gtk_args_collect (object_type,
object_arg_info_ht, object_arg_info_ht,
arg_list_p, arg_list_p,
info_list_p, info_list_p,
var_args_p); first_arg_name,
var_args);
} }
gchar* gchar*

View File

@ -242,6 +242,7 @@ guint gtk_object_class_user_signal_newv (GtkObjectClass *klass,
guint nparams, guint nparams,
GtkType *params); GtkType *params);
GtkObject* gtk_object_new (GtkType type, GtkObject* gtk_object_new (GtkType type,
const gchar *first_arg_name,
...); ...);
GtkObject* gtk_object_newv (GtkType object_type, GtkObject* gtk_object_newv (GtkType object_type,
guint n_args, guint n_args,
@ -272,6 +273,7 @@ void gtk_object_getv (GtkObject *object,
* more than one c-function argument. * more than one c-function argument.
*/ */
void gtk_object_set (GtkObject *object, void gtk_object_set (GtkObject *object,
const gchar *first_arg_name,
...); ...);
void gtk_object_setv (GtkObject *object, void gtk_object_setv (GtkObject *object,
guint n_args, guint n_args,
@ -372,7 +374,8 @@ void gtk_object_arg_get (GtkObject *object,
gchar* gtk_object_args_collect (GtkType object_type, gchar* gtk_object_args_collect (GtkType object_type,
GSList **arg_list_p, GSList **arg_list_p,
GSList **info_list_p, GSList **info_list_p,
gpointer var_args_p); const gchar *first_arg_name,
va_list var_args);
gchar* gtk_object_arg_get_info (GtkType object_type, gchar* gtk_object_arg_get_info (GtkType object_type,
const gchar *arg_name, const gchar *arg_name,
GtkArgInfo **info_p); GtkArgInfo **info_p);

View File

@ -1780,9 +1780,10 @@ gtk_signal_collect_params (GtkArg *params,
params->type = *(param_types++); params->type = *(param_types++);
params->name = NULL; params->name = NULL;
error = gtk_arg_collect_value (GTK_FUNDAMENTAL_TYPE (params->type), GTK_ARG_COLLECT_VALUE (GTK_FUNDAMENTAL_TYPE (params->type),
params, params,
&var_args); var_args,
error);
if (error) if (error)
{ {
failed = TRUE; failed = TRUE;

View File

@ -955,7 +955,8 @@ gtk_widget_init (GtkWidget *widget)
*****************************************/ *****************************************/
GtkWidget* GtkWidget*
gtk_widget_new (guint widget_type, gtk_widget_new (GtkType widget_type,
const gchar *first_arg_name,
...) ...)
{ {
GtkObject *object; GtkObject *object;
@ -968,11 +969,12 @@ gtk_widget_new (guint widget_type,
object = gtk_type_new (widget_type); object = gtk_type_new (widget_type);
va_start (var_args, widget_type); va_start (var_args, first_arg_name);
error = gtk_object_args_collect (GTK_OBJECT_TYPE (object), error = gtk_object_args_collect (GTK_OBJECT_TYPE (object),
&arg_list, &arg_list,
&info_list, &info_list,
&var_args); first_arg_name,
var_args);
va_end (var_args); va_end (var_args);
if (error) if (error)
@ -1008,7 +1010,7 @@ gtk_widget_new (guint widget_type,
*****************************************/ *****************************************/
GtkWidget* GtkWidget*
gtk_widget_newv (guint type, gtk_widget_newv (GtkType type,
guint nargs, guint nargs,
GtkArg *args) GtkArg *args)
{ {
@ -1060,7 +1062,8 @@ gtk_widget_getv (GtkWidget *widget,
*****************************************/ *****************************************/
void void
gtk_widget_set (GtkWidget *widget, gtk_widget_set (GtkWidget *widget,
const gchar *first_arg_name,
...) ...)
{ {
GtkObject *object; GtkObject *object;
@ -1074,11 +1077,12 @@ gtk_widget_set (GtkWidget *widget,
object = GTK_OBJECT (widget); object = GTK_OBJECT (widget);
va_start (var_args, widget); va_start (var_args, first_arg_name);
error = gtk_object_args_collect (GTK_OBJECT_TYPE (object), error = gtk_object_args_collect (GTK_OBJECT_TYPE (object),
&arg_list, &arg_list,
&info_list, &info_list,
&var_args); first_arg_name,
var_args);
va_end (var_args); va_end (var_args);
if (error) if (error)

View File

@ -360,9 +360,10 @@ struct _GtkWidgetShapeInfo
GtkType gtk_widget_get_type (void); GtkType gtk_widget_get_type (void);
GtkWidget* gtk_widget_new (guint type, GtkWidget* gtk_widget_new (GtkType type,
const gchar *first_arg_name,
...); ...);
GtkWidget* gtk_widget_newv (guint type, GtkWidget* gtk_widget_newv (GtkType type,
guint nargs, guint nargs,
GtkArg *args); GtkArg *args);
void gtk_widget_ref (GtkWidget *widget); void gtk_widget_ref (GtkWidget *widget);
@ -376,6 +377,7 @@ void gtk_widget_getv (GtkWidget *widget,
guint nargs, guint nargs,
GtkArg *args); GtkArg *args);
void gtk_widget_set (GtkWidget *widget, void gtk_widget_set (GtkWidget *widget,
const gchar *first_arg_name,
...); ...);
void gtk_widget_setv (GtkWidget *widget, void gtk_widget_setv (GtkWidget *widget,
guint nargs, guint nargs,