Hi Ruben,

I think what you are looking for is a C variadic function. Something that works 
like g_object_set() with a Null terminated list of arguments.

Using dynamic glib containers might be a better choice. It is simpler to just 
pass a single pointer with your user_data to functions which is how GTK 
callbacks are setup. Also, I have read that variadics have some troubles and 
don't always work well if you call the functions from another language. 

Eric


//gcc -Wall ptr_array1.c -o ptr_array1 `pkg-config --cflags --libs glib-2.0`
 
#include<glib.h>
#include<stdarg.h>

static void vChart_Init1(gchar *widget, GPtrArray *series)
  {
    g_print("Init1\n");
    gint i=0;
    gint length=series->len;
    for(i=0;i<length;i++) g_print("%s\n", (gchar*)g_ptr_array_index(series, i));
  }
static void vChart_Init2(gchar *widget,...)
  {
    g_print("Init2\n");
    gchar *temp=widget;
    if(temp!=NULL)
      {
        va_list var_args;  
        va_start(var_args, widget);
        while(temp!=NULL)
          {
            g_print("%s\n", temp);
            temp=va_arg(var_args, gchar*);
          }
        va_end(var_args);
      }
  }
int main()
  {
    gchar *widget="widget";
    gchar *string1="Series A";
    gchar *string2="Series B";
    gchar *string3="Series C";
    GPtrArray *series=g_ptr_array_new();
    g_ptr_array_add(series, string1);
    g_ptr_array_add(series, string2);
    g_ptr_array_add(series, string3);

    vChart_Init1(widget, series);
    vChart_Init2(widget, string1, string2, string3, NULL);
    vChart_Init2(widget, "Series A", "Series B", "Series C", NULL);

    g_ptr_array_unref(series);

    return 0;
  }


_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to