Re: [Vala] structs unions and types
- From: Sam Liddicott <sam liddicott com>
- To: vala-list gnome org
- Subject: Re: [Vala] structs unions and types
- Date: Mon, 23 Jun 2008 12:52:04 +0100
Some errors were bogus because I had cut a "construct" line out of my
report; however I think I am OK here:
public class PhoneUIGlade : Gtk.Object {
protected Glade.XML xml;
private Module module;
protected class window_widgets {
Gtk.Widget blah;
Gtk.Widget blah2;
}
protected window_widgets widgets;
}
by declaring a class instead of a struct.
I really wanted an anonymous struct though, but it seems that vala
forbids that.
At least with a class (done as a pointer, so no "incomplete type"
errors) the memory isn't allocated till it's used.
So now I just need to work around the union problem, maybe just
typecasting the address of widgets as a *Gtk.Widget and array offsetting
will get round it.
Sam
* Sam Liddicott wrote, On 23/06/08 12:36:
I'm playing around trying to implement some C structures neatly in vala
and come over these strange situtions.
Case 1
protected struct widgets {
Gtk.Widget blah;
Gtk.Widget blah2;
}
public class PhoneUIGlade : Gtk.Object {
protected Glade.XML xml;
protected widgets widgets;
private Module module;
}
src/phoneui.glade.vala:35.15-35.21: error: `PhoneUIGlade.widgets' is not
a type
protected widgets widgets;
^^^^^^^
Compilation failed: 1 error(s), 0 warning(s)
How was I supposed to refer to the outer struct type?
Case 2
public class PhoneUIGlade : Gtk.Object {
protected Glade.XML xml;
protected struct widgets {
Gtk.Widget blah;
Gtk.Widget blah2;
} protected widgets x;
private Module module;
}
(I call it x and not widgets otherwise I get
"src/phoneui.glade.vala:34.7-34.32: error: `PhoneUIGlade' already
contains a definition for `widgets'" even though one is a type and one
is a variable and so should be in different compiler namespaces)
In file included from ./src/mainwindow.h:30,
from src/mainwindow.c:22:
./src/phoneui.glade.h:50: error: field ‘widgets’ has incomplete type
the generated ./src/phoneui.glade.h has:
...
typedef struct _PhoneUIGladewidgets PhoneUIGladewidgets;
/*[CCode (cheader_filename="phoneui.glade.h")]*/
struct _PhoneUIGlade {
GtkObject parent_instance;
PhoneUIGladePrivate * priv;
GladeXML* xml;
PhoneUIGladewidgets x;
};
...
struct _PhoneUIGladewidgets {
GtkWidget* blah;
GtkWidget* blah2;
};
So we see that the struct _PhoneUIGladewidgets is not defined until
after class that holds and defines it _PhoneUIGlade.
Case 3
I can't get anything like this to compile in vala at all; please could
someone give me a clue.
I'm trying to define a protected type in an automatically generated
superclass of a glade window, so the manually generated subclass gets
delphi-like access to all the widgets.
union widgets {
Gtk.Widget by_number[window1_WIDGET_COUNT];
struct by_name {
Gtk.Window window1; /* GtkWindow window1 */
Gtk.VBox vbox1; /* GtkVBox vbox1 */
Gtk.Image image1; /* GtkImage image1 */
Gtk.Button button1; /* GtkButton button1 */
Gtk.Statusbar statusbar1; /* GtkStatusbar statusbar1 */
}
};/* widget name list for runtime binding */
Sam
_______________________________________________
Vala-list mailing list
Vala-list gnome org
http://mail.gnome.org/mailman/listinfo/vala-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]