va_lists in glib/gtk and set/get(...) functions
- From: Tim Janik <timj gtk org>
- To: Gtk+ Developers <gtk-devel-list redhat com>
- Subject: va_lists in glib/gtk and set/get(...) functions
- Date: Fri, 21 Aug 1998 22:07:14 +0200 (CEST)
hey all,
several people have recently encountered problems with the current
implementation of varargs functions (...) in glib/gtk.
Havoc Pennington wants to implement c++ equivalents to e.g.
void gnome_canvas_item_set (GnomeCanvasItem *item, ...);
which basically translates into
GnomeCanvasItem::set (...);
for c++, no parameter to start the va_list from.
what he needs is:
void gnome_canvas_item_set (GnomeCanvasItem *item,
const gchar *arg_name,
...);
and then:
GnomeCanvasItem::set (const gchar *first_arg_name, ...);
so he can issue va_start (args, first_arg_name); but this requires changes
to the underlying arg mechanisms in gtk.
also passing va_lists by reference is a problem on platforms that define va_list
as some kind of array.
i'll therefore go through gtk and glib and change the
void func ([some args], va_list *args1, va_list *args2)
{
}
prototypes to
void func ([some args], va_list args1)
{
va_list arg2 = args1;
}
also, most of the object/child argument functions (plus the gtk internals)
will be changed to feature the const gchar *first_arg_name variable, so
Havoc's problem will be solved as well.
functions that will be changed in a source compatible manner are:
gtk_object_set, gtk_widget_new, gtk_widget_set and gtk_arg_collect_value
from gtkargcollector.c (this will probably be moved into a public *.h file
that is installed but not included by default for gtk).
source incompatible changes are standing out for
void g_logv (const gchar *log_domain,
GLogLevelFlags log_level,
const gchar *format,
va_list args1);
gint g_vsnprintf (gchar *string,
gulong n,
gchar const *format,
va_list args1);
and the non-public
extern gchar* g_vsprintf (const gchar *fmt, va_list args);
---
ciaoTJ
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]