struct tvision_info {
TObject *tobj;
};
struct tvision_info*
tvision_info_from_magic(SV *objref, int flags) {
...
}
####
TYPEMAP
TObject* O_TObject
TView* O_TView
TButton* O_TButton
INPUT
O_TObject
$var= tvision_info_from_magic($arg, OR_DIE)->tobj;
O_TView
$var= dynamic_cast(tvision_info_from_magic($arg, OR_DIE)->tobj);
if (!$var) croak("Not an instance of TView");
O_TButton
$var= dynamic_cast(tvision_info_from_magic($arg, OR_DIE)->tobj);
if (!$var) croak("Not an instance of TButton");
##
##
bool
focus(view)
TView* view
CODE:
RETVAL= view->focus();
OUTPUT:
RETVAL
##
##
template void tvision_obj_from_magic(T *dest, SV *objref, int flags) {
struct tvision_info* tinfo= tvision_info_from_magic(objref, flags);
T typed= tinfo->tobj? dynamic_cast(tinfo->tobj) : NULL;
if ((flags & OR_DIE) && !typed) croak("Wrong type of object");
*dest= typed;
}
##
##
O_TButton
tvision_obj_from_magic(&$var, $arg, OR_DIE);
##
##
TYPEMAP
TObject* O_TObject
TView* O_TObject
TButton* O_TObject
INPUT
O_TObject
$var= dynamic_cast<$type>(tvision_info_from_magic($arg, OR_DIE)->tobj);
if (!$var) croak("Object is not a $type");