File: typemap

package info (click to toggle)
libgtk-perl 0.1.17-1
  • links: PTS
  • area: main
  • in suites: hamm
  • size: 1,352 kB
  • ctags: 1,100
  • sloc: ansic: 4,393; perl: 3,463; makefile: 36
file content (133 lines) | stat: -rw-r--r-- 3,178 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
TYPEMAP

# These are synonyms for Gtk::Gdk::Pixmap (which itself is a renamed Gtk::Gdk::Window)
Gtk::Gdk::Window	T_SimpleVal
Gtk::Gdk::Bitmap	T_SimpleVal

Gtk::Gdk::Cursor	T_MISCPTROBJ
Gtk::Gdk::GC		T_MISCPTROBJ
Gtk::Gdk::Image		T_SimpleVal
Gtk::Gdk::GCValues	T_MISCPTROBJ
Gtk::Gdk::Atom		T_SimpleVal

Gtk::MenuFactory	T_MISCPTROBJ
Gtk::SelectionData      T_MISCPTROBJ

Gtk::Widget_Up		T_GtkPTROBJUp
Gtk::Widget_Sink_Up		T_GtkPTROBJSinkUp

Gtk::Gdk::Event		T_SimpleVal
Gtk::Gdk::Region	T_SimpleVal
Gtk::Gdk::Rectangle	T_SimplePtr
Gtk::Gdk::Color		T_SimpleVal

gfloat				T_FLOAT
gboolean			T_BOOL
guint				T_IV
gint				T_IV
glong				T_IV
gulong				T_IV

bool				T_BOOL

INPUT

T_BOOL
	$var = (int)SvIV($arg)

T_GtkPTROBJ
	if (SvTRUE($arg)) {
		$var = Cast$type(SvGtkObjectRef($arg, \"${ntype}\"));
	} else
		croak(\"$var is not of type ${ntype}\")

T_GtkPTROBJOrNULL
	$var = SvTRUE($arg) ? Cast$type(SvGtkObjectRef($arg, \"" . ($foo=$ntype,$foo=~s/_OrNULL//,$foo). "\")) : 0

T_GtkPTROBJUp
	$var = Cast$type(SvGtkObjectRef($arg, \"${ntype}\"))

T_GtkPTROBJSink
	$var = Cast$type(SvGtkObjectRef($arg, \"${ntype}\"))

T_GtkPTROBJSinkUp
	$var = Cast$type(SvGtkObjectRef($arg, \"${ntype}\"))

T_GtkPTRREF
	$var = Cast$type(SvGtkObjectRef($arg, 0))

T_GtkPTRREF_Up
	$var = Cast$type(SvGtkObjectRef($arg, 0))

T_MISCPTROBJ
	$var = ($type)SvMiscRef($arg, \"${ntype}\")

T_MISCPTRREF
	$var = ($type)SvMiscRef($arg, 0);

T_REFPTROBJ
	$var = ($type)SvMiscRef($arg, \"${ntype}\")

T_REFPTRREF
	$var = ($type)SvMiscRef($arg, 0);

T_SimpleVal
	$var = Sv" . ($foo=$ntype, $foo=~s/://g, $foo=~s/^GtkGdk/Gdk/, $foo) . "($arg)

T_SimplePtr
	$var = Sv" . ($foo=$ntype, $foo=~s/://g, $foo=~s/^GtkGdk/Gdk/, $foo) . "($arg,0)

OUTPUT

T_BOOL
	$arg = boolSV($var);

T_GtkPTROBJ
    if (!$var) {
    	croak("failed to return mandatory object of type $ntype");
    }
	sv_setsv($arg, newSVGtkObjectRef(GTK_OBJECT($var), \"${ntype}\"));
	SvREFCNT_dec(SvRV($arg));

T_GtkPTROBJSink
    if (!$var) {
    	croak("failed to return mandatory object of type @{[grep {s/_Sink//,1} $ntype]}");
    }
	sv_setsv($arg, newSVGtkObjectRef(GTK_OBJECT($var), \"@{[grep {s/_Sink//,1} $ntype]}\"));
	gtk_object_sink(GTK_OBJECT($var));
	SvREFCNT_dec(SvRV($arg));

T_GtkPTROBJOrNULL
    if ($var) {
		sv_setsv($arg, newSVGtkObjectRef(GTK_OBJECT($var), \"@{[grep {s/_OrNULL//,1} $ntype]}\"));
		SvREFCNT_dec(SvRV($arg));
	} else
		sv_setsv($arg, newSVsv(&sv_undef));

T_GtkPTROBJUp
	sv_setsv($arg, newSVGtkObjectRef(GTK_OBJECT($var), 0));
	SvREFCNT_dec(SvRV($arg));

T_GtkPTROBJSinkUp
	sv_setsv($arg, newSVGtkObjectRef(GTK_OBJECT($var), 0));
	gtk_object_sink(GTK_OBJECT($var));
	SvREFCNT_dec(SvRV($arg));

T_MISCPTROBJ
	sv_setsv($arg, newSVMiscRef((void*)$var, \"${ntype}\", 0));
	SvREFCNT_dec(SvRV($arg));

T_REFPTROBJ
	{
		int n;
		sv_setsv($arg,newSVMiscRef((void*)$var, \"${ntype}\", &n));
		SvREFCNT_dec(SvRV($arg));
		if (n)
			@{[grep {s/://g, s/^GtkGdk/Gdk/, s/([a-z])([A-Z]+)/$1_$2/g, tr/A-Z/a-z/, 1} $ntype]}_ref($var);
	}

T_SimpleVal
	sv_setsv($arg,sv_2mortal(newSV@{[grep {s/://g,s/^GtkGdk/Gdk/,1} $ntype]}($var)));

T_SimplePtr
	sv_setsv($arg,sv_2mortal(newSV@{[grep {s/://g,s/^GtkGdk/Gdk/,1} $ntype]}($var)));