# # Copyright (C) 2006-2007 Tom Zoerner. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # For a copy of the GPL refer to # # $Id: typemap,v 1.2 2007/12/02 18:43:08 tom Exp tom $ # TYPEMAP # basic C types vbi_bool T_BOOL vbi_pgno T_IV vbi_subno T_IV vbi_nuid T_UV vbi_page_type T_ENUM vbi_pixfmt T_IV const char * T_PV int64_t T_IV VBI_CHN_PRIO T_IV VBI_CAPTURE_FD_FLAGS T_IV vbi_service_set T_UV vbi_videostd_set T_UV # objects # (for some reason the INPUT/OUTPUT definitions are not found if the type name has more than 2 chars) VbiProxyObj * PO VbiCaptureObj * PO VbiVtObj * PO VbiRawDecObj * PO VbiExportObj * PO VbiSearchObj * PO VbiPageObj * PO VbiDvb_MuxObj * PO VbiDvb_DemuxObj * PO VbiIdl_DemuxObj * PO VbiPfc_DemuxObj * PO VbiXds_DemuxObj * PO # plain pointer VbiRawBuffer * T_PTROBJ VbiSlicedBuffer * T_PTROBJ zvbi_xs_srv_or_null SV ############################################################################# INPUT PV if (SvOK($arg)) { $var = $arg; } else Perl_croak(aTHX_ \"$var is not a scalar\") PO if (sv_derived_from($arg, \"${(my $ntt=$ntype)=~s/Vbi(.*)Obj.*/Video::ZVBI::\L$1/;\$ntt}\")) { IV tmp = SvIV((SV*)SvRV($arg)); $var = INT2PTR($type,tmp); } else Perl_croak(aTHX_ \"$var is not of type ${ntype}\") SV if (SvOK($arg)) { ${var}.l_services = SvIV($arg); ${var}.p_services = &${var}.l_services; } else { ${var}.p_services = NULL; } ############################################################################# OUTPUT PV $arg = $var; PO sv_setref_pv($arg, \"${(my $ntt=$ntype)=~s/Vbi(.*)(Obj|Ref).*/Video::ZVBI::\L$1/;\$ntt}\", (void*)$var); SV if (${var}.p_services != NULL) { SvIV_set($arg, ${var}.l_services); }