TYPEMAP
Gtk::Gdk::Cursor	T_MISCPTROBJ
Gtk::Gdk::Window	T_MISCPTROBJ
Gtk::Gdk::Visual	T_MISCPTROBJ
Gtk::Gdk::Colormap	T_MISCPTROBJ
Gtk::Gdk::Pixmap	T_MISCPTROBJ
Gtk::Gdk::Bitmap	T_MISCPTROBJ
Gtk::Gdk::GC		T_MISCPTROBJ
Gtk::Gdk::Font		T_MISCPTROBJ
Gtk::Gdk::Image		T_MISCPTROBJ
Gtk::Gdk::GCValues		T_MISCPTROBJ

Gtk::Gdk::Event	T_SimplePtr
Gtk::Gdk::EventMask	T_SimpleVal

Gtk::Tooltips			T_PTROBJ
Gtk::AcceleratorTable	T_REFPTROBJ
Gtk::Style				T_MISCPTROBJ
Gtk::MenuFactory		T_MISCPTROBJ

upGtk::Widget		T_GtkUPPTROBJ

Gtk::Gdk::Rectangle	T_SimplePtr
Gtk::Gdk::Color	T_MISCPTROBJ
Gtk::Gdk::ImageType	T_SimpleVal
Gtk::Gdk::WindowType	T_SimpleVal
Gtk::Gdk::Function	T_SimpleVal
Gtk::Gdk::FillStyle	T_SimpleVal
Gtk::Gdk::JoinStyle	T_SimpleVal
Gtk::Gdk::CapStyle	T_SimpleVal
Gtk::Gdk::Fill	T_SimpleVal
Gtk::Gdk::Atom	T_SimpleVal
Gtk::Gdk::SubwindowMode	T_SimpleVal
Gtk::Gdk::LineStyle	T_SimpleVal
Gtk::Gdk::GCValuesMask	T_SimpleVal
Gtk::Gdk::ModifierType	T_SimpleVal
Gtk::Gdk::InputCondition	T_SimpleVal
Gtk::Gdk::InputMode	T_SimpleVal
Gtk::Gdk::InputSource	T_SimpleVal
Gtk::Gdk::AxisUse	T_SimpleVal
Gtk::Gdk::DeviceInfo	T_SimpleVal
Gtk::Gdk::DeviceTimeCoord	T_SimpleVal

Gtk::ShadowType		T_SimpleVal
Gtk::SelectionMode	T_SimpleVal
Gtk::SubmenuPlacement	T_SimpleVal
Gtk::PositionType	T_SimpleVal
Gtk::MetricType		T_SimpleVal
Gtk::PolicyType		T_SimpleVal
Gtk::StateType		T_SimpleVal
Gtk::UpdateType		T_SimpleVal
Gtk::WindowType		T_SimpleVal
Gtk::WindowPosition		T_SimpleVal
Gtk::AttachOptions		T_SimpleVal
Gtk::ArrowType		T_SimpleVal
Gtk::MenuFactoryType		T_SimpleVal
Gtk::MenuPath		T_SimpleVal
Gtk::MenuEntry		T_SimpleVal
Gtk::PreviewType		T_SimpleVal
Gtk::CurveType		T_SimpleVal

Gtk::Adjustment	T_GtkPTROBJ
Gtk::AspectFrame	T_GtkPTROBJ
Gtk::Alignment	T_GtkPTROBJ
Gtk::Arrow	T_GtkPTROBJ
Gtk::Bin	T_GtkPTROBJ
Gtk::Box	T_GtkPTROBJ
Gtk::Button	T_GtkPTROBJ
Gtk::CheckButton	T_GtkPTROBJ
Gtk::ColorSelection	T_GtkPTROBJ
Gtk::ColorSelectionDialog	T_GtkPTROBJ
Gtk::Container	T_GtkPTROBJ
Gtk::Curve	T_GtkPTROBJ
Gtk::Data	T_GtkPTROBJ
Gtk::Dialog	T_GtkPTROBJ
Gtk::DrawingArea	T_GtkPTROBJ
Gtk::Entry	T_GtkPTROBJ
Gtk::FileSelection	T_GtkPTROBJ
Gtk::Frame	T_GtkPTROBJ
Gtk::GammaCurve	T_GtkPTROBJ
Gtk::HBox	T_GtkPTROBJ
Gtk::HPaned	T_GtkPTROBJ
Gtk::HRuler	T_GtkPTROBJ
Gtk::HScale	T_GtkPTROBJ
Gtk::HScrollbar	T_GtkPTROBJ
Gtk::HSeparator	T_GtkPTROBJ
Gtk::Image	T_GtkPTROBJ
Gtk::InputDialog	T_GtkPTROBJ
Gtk::Item	T_GtkPTROBJ
Gtk::Label	T_GtkPTROBJ
Gtk::List	T_GtkPTROBJ
Gtk::ListItem	T_GtkPTROBJ
Gtk::Menu	T_GtkPTROBJ
Gtk::MenuBar	T_GtkPTROBJ
Gtk::MenuItem	T_GtkPTROBJ
Gtk::MenuShell	T_GtkPTROBJ
Gtk::Misc	T_GtkPTROBJ
Gtk::Notebook	T_GtkPTROBJ
Gtk::Object	T_GtkPTROBJ
Gtk::OptionMenu	T_GtkPTROBJ
Gtk::Paned	T_GtkPTROBJ
Gtk::Pixmap	T_GtkPTROBJ
Gtk::Preview	T_GtkPTROBJ
Gtk::ProgressBar	T_GtkPTROBJ
Gtk::RadioButton	T_GtkPTROBJ
Gtk::RadioMenuItem	T_GtkPTROBJ
Gtk::Range	T_GtkPTROBJ
Gtk::Ruler	T_GtkPTROBJ
Gtk::Scale	T_GtkPTROBJ
Gtk::Scrollbar	T_GtkPTROBJ
Gtk::ScrolledWindow	T_GtkPTROBJ
Gtk::Separator	T_GtkPTROBJ
Gtk::Table	T_GtkPTROBJ
Gtk::Text	T_GtkPTROBJ
Gtk::ToggleButton	T_GtkPTROBJ
Gtk::Tree	T_GtkPTROBJ
Gtk::TreeItem	T_GtkPTROBJ
Gtk::VBox	T_GtkPTROBJ
Gtk::Viewport	T_GtkPTROBJ
Gtk::VPaned	T_GtkPTROBJ
Gtk::VRuler	T_GtkPTROBJ
Gtk::VScale	T_GtkPTROBJ
Gtk::VScrollbar	T_GtkPTROBJ
Gtk::VSeparator	T_GtkPTROBJ
Gtk::Widget	T_GtkPTROBJ
Gtk::Window	T_GtkPTROBJ

INPUT

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

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

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

T_GtkUPPTRREF
	$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) . "($arg)

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

OUTPUT

T_GtkPTROBJ
	sv_setsv($arg, newSVGtkObjectRef(GTK_OBJECT($var), \"${ntype}\"));
	SvREFCNT_dec(SvRV($arg));

T_GtkUPPTROBJ
	sv_setsv($arg, newSVGtkObjectRef(GTK_OBJECT($var), 0));
	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/([a-z])([A-Z]+)/$1_$2/g, tr/A-Z/a-z/, 1} $ntype]}_ref($var);
	}

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

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