Add new type: gtk-widget. It represents pointer to GtkWidget.
This commit is contained in:
		
							parent
							
								
									79bfa12850
								
							
						
					
					
						commit
						4b150c5f7c
					
				| 
						 | 
				
			
			@ -32,8 +32,20 @@
 | 
			
		|||
#include <gtk/gtk.h>
 | 
			
		||||
#include "config.h"
 | 
			
		||||
 | 
			
		||||
extern int T_GtkWidget;
 | 
			
		||||
 | 
			
		||||
#define GTKWIDGET(x)   ((struct S_GtkWidget *)POINTER(x))
 | 
			
		||||
 | 
			
		||||
struct S_GtkWidget {
 | 
			
		||||
    Object tag;
 | 
			
		||||
    GtkWidget *widget;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
C_LINKAGE_BEGIN
 | 
			
		||||
 | 
			
		||||
extern GtkWidget *Get_GtkWidget (Object w);
 | 
			
		||||
extern Object Make_GtkWidget (GtkWidget *w);
 | 
			
		||||
 | 
			
		||||
extern void elk_init_gtk_gtkmain (void);
 | 
			
		||||
extern void elk_init_gtk_gtkwidget (void);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,5 +30,38 @@
 | 
			
		|||
 | 
			
		||||
#include "gtk.h"
 | 
			
		||||
 | 
			
		||||
void elk_init_gtk_gtkwidget () {
 | 
			
		||||
int T_GtkWidget;
 | 
			
		||||
 | 
			
		||||
GtkWidget *Get_GtkWidget (Object w) {
 | 
			
		||||
    Check_Type (w, T_GtkWidget);
 | 
			
		||||
    return GTKWIDGET(w)->widget;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Object Make_GtkWidget (GtkWidget *w) {
 | 
			
		||||
    Object yield;
 | 
			
		||||
 | 
			
		||||
    yield = Alloc_Object (sizeof (struct S_GtkWidget), T_GtkWidget, 0);
 | 
			
		||||
    GTKWIDGET(yield)->widget = w;
 | 
			
		||||
    return yield;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int GtkWidget_Equal (Object x, Object y) {
 | 
			
		||||
    return GTKWIDGET(x)->widget == GTKWIDGET(y)->widget;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int GtkWidget_Print (Object x, Object port, int raw, int depth,
 | 
			
		||||
        int len) {
 | 
			
		||||
    Printf (port, "#[gtk-widget %lu]", (unsigned long)GTKWIDGET(x)->widget);
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static Object GtkWidgetp (Object x) {
 | 
			
		||||
    return TYPE(x) == T_GtkWidget ? True : False;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void elk_init_gtk_gtkwidget () {
 | 
			
		||||
    T_GtkWidget = Define_Type (0, "gtk-widget", NOFUNC,
 | 
			
		||||
        sizeof (struct S_GtkWidget), GtkWidget_Equal, GtkWidget_Equal,
 | 
			
		||||
        GtkWidget_Print, NOFUNC);
 | 
			
		||||
    Define_Primitive (GtkWidgetp, "gtk-widget?", 1, 1, EVAL);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue