/* * This file was generated automatically by xsubpp version 1.9507 from the * contents of RawLibfaim.xs. Do not edit this file, edit RawLibfaim.xs instead. * * ANY CHANGES MADE HERE WILL BE LOST! * */ #line 1 "RawLibfaim.xs" #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include #include typedef struct aim_session_t Aim_session_t; typedef struct aim_conn_t Aim_conn_t; typedef struct timeval Timeval_t; typedef struct command_rx_struct Command_rx_struct; typedef struct pcallback { int family; int type; SV *func; struct pcallback *next; } Pcallback; Pcallback *pcallback_list = NULL; int perl_callback( struct aim_session_t *sess, struct command_rx_struct *command, ...) { va_list args; u_short family; u_short type; va_start(args, command); /*family = aimutil_get16(command->data+0); type = aimutil_get16(command->data+2); */ printf("Perl callback for FAMILY:%i TYPE:%i\n",family,type); va_end(args); return 1; } /* DELETE ME */ /* * Bleck functions get called when there's no non-bleck functions * around to cleanup the mess... */ int mybleck(struct aim_session_t *sess,struct command_rx_struct *workingPtr, ...) { u_short family; u_short subtype; u_short maxf; u_short maxs; /* XXX: this is ugly. and big just for debugging. */ char *literals[14][25] = { {"Invalid", NULL }, {"General", "Invalid", "Error", "Client Ready", "Server Ready", "Service Request", "Redirect", "Rate Information Request", "Rate Information", "Rate Information Ack", NULL, "Rate Information Change", "Server Pause", NULL, "Server Resume", "Request Personal User Information", "Personal User Information", "Evil Notification", NULL, "Migration notice", "Message of the Day", "Set Privacy Flags", "Well Known URL", "NOP" }, {"Location", "Invalid", "Error", "Request Rights", "Rights Information", "Set user information", "Request User Information", "User Information", "Watcher Sub Request", "Watcher Notification" }, {"Buddy List Management", "Invalid", "Error", "Request Rights", "Rights Information", "Add Buddy", "Remove Buddy", "Watcher List Query", "Watcher List Response", "Watcher SubRequest", "Watcher Notification", "Reject Notification", "Oncoming Buddy", "Offgoing Buddy" }, {"Messeging", "Invalid", "Error", "Add ICBM Parameter", "Remove ICBM Parameter", "Request Parameter Information", "Parameter Information", "Outgoing Message", "Incoming Message", "Evil Request", "Evil Reply", "Missed Calls", "Message Error", "Host Ack" }, {"Advertisements", "Invalid", "Error", "Request Ad", "Ad Data (GIFs)" }, {"Invitation / Client-to-Client", "Invalid", "Error", "Invite a Friend", "Invitation Ack" }, {"Administrative", "Invalid", "Error", "Information Request", "Information Reply", "Information Change Request", "Information Chat Reply", "Account Confirm Request", "Account Confirm Reply", "Account Delete Request", "Account Delete Reply" }, {"Popups", "Invalid", "Error", "Display Popup" }, {"BOS", "Invalid", "Error", "Request Rights", "Rights Response", "Set group permission mask", "Add permission list entries", "Delete permission list entries", "Add deny list entries", "Delete deny list entries", "Server Error" }, {"User Lookup", "Invalid", "Error", "Search Request", "Search Response" }, {"Stats", "Invalid", "Error", "Set minimum report interval", "Report Events" }, {"Translate", "Invalid", "Error", "Translate Request", "Translate Reply", }, {"Chat Navigation", "Invalid", "Error", "Request rights", "Request Exchange Information", "Request Room Information", "Request Occupant List", "Search for Room", "Outgoing Message", "Incoming Message", "Evil Request", "Evil Reply", "Chat Error", } }; maxf = sizeof(literals) / sizeof(literals[0]); maxs = sizeof(literals[0]) / sizeof(literals[0][0]); printf("bleck: I am about to get the family / subtype\n"); family = aimutil_get16(workingPtr->data+0); subtype= aimutil_get16(workingPtr->data+2); printf("bleck: I just got the family / subtype\n"); if((family < maxf) && (subtype+1 < maxs) && (literals[family][subtype] != NULL)) printf("bleck: null handler for %04x/%04x (%s)\n", family, subtype, literals[family][subtype+1]); else printf("bleck: null handler for %04x/%04x (no literal)\n",family,subtype); return 1; } #line 240 "RawLibfaim.c" XS(XS_RawLibfaim__Session_new) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::Session::new(CLASS)"); { char * CLASS = (char *)SvPV(ST(0),PL_na); Aim_session_t * RETVAL; #line 238 "RawLibfaim.xs" RETVAL = (Aim_session_t *)safemalloc(sizeof(Aim_session_t)); if( RETVAL == NULL) { warn("unable to malloc Aim_session_t"); XSRETURN_UNDEF; } #line 256 "RawLibfaim.c" ST(0) = sv_newmortal(); sv_setref_pv( ST(0), CLASS, (void*)RETVAL ); } XSRETURN(1); } XS(XS_RawLibfaim__Session_DESTROY) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::Session::DESTROY(self)"); { Aim_session_t * self; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_session_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Session::DESTROY() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 251 "RawLibfaim.xs" safefree(self); #line 280 "RawLibfaim.c" } XSRETURN_EMPTY; } XS(XS_RawLibfaim__Session_init) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::Session::init(self)"); { Aim_session_t * self; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_session_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Session::init() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 257 "RawLibfaim.xs" aim_session_init(self,AIM_SESS_FLAGS_NONBLOCKCONNECT); #line 301 "RawLibfaim.c" } XSRETURN_EMPTY; } XS(XS_RawLibfaim__Session_conn_addhandler) { dXSARGS; if (items != 6) Perl_croak(aTHX_ "Usage: RawLibfaim::Session::conn_addhandler(self, conn, family, type, phandler, flags)"); { Aim_session_t * self; Aim_conn_t * conn; int family = (int)SvIV(ST(2)); int type = (int)SvIV(ST(3)); SV * phandler = ST(4); int flags = (int)SvIV(ST(5)); #line 268 "RawLibfaim.xs" Pcallback *new_pcall; #line 320 "RawLibfaim.c" int RETVAL; dXSTARG; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_session_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Session::conn_addhandler() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; if( sv_isobject(ST(1)) && (SvTYPE(SvRV(ST(1))) == SVt_PVMG) ) conn = (Aim_conn_t *)SvIV((SV*)SvRV( ST(1) )); else{ warn( "RawLibfaim::Session::conn_addhandler() -- conn is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 270 "RawLibfaim.xs" new_pcall = (Pcallback *)safemalloc(sizeof(Pcallback)); new_pcall->family = family; new_pcall->type = type; new_pcall->func = phandler; new_pcall->next = pcallback_list; pcallback_list = new_pcall; RETVAL = aim_conn_addhandler(self,conn,family,type,mybleck,flags); #line 345 "RawLibfaim.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_RawLibfaim__Session_select) { dXSARGS; if (items != 2) Perl_croak(aTHX_ "Usage: RawLibfaim::Session::select(self, status)"); { Aim_session_t * self; int status = (int)SvIV(ST(1)); #line 287 "RawLibfaim.xs" char *CLASS = "RawLibfaim::Connection"; #line 361 "RawLibfaim.c" Aim_conn_t * RETVAL; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_session_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Session::select() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 289 "RawLibfaim.xs" warn("I am ... Here"); RETVAL = aim_select(self,NULL,&status); #line 373 "RawLibfaim.c" sv_setiv(ST(1), (IV)status); SvSETMAGIC(ST(1)); ST(0) = sv_newmortal(); sv_setref_pv( ST(0), CLASS, (void*)RETVAL ); } XSRETURN(1); } XS(XS_RawLibfaim__Session_request_login) { dXSARGS; if (items != 3) Perl_croak(aTHX_ "Usage: RawLibfaim::Session::request_login(self, conn, screenname)"); { Aim_session_t * self; Aim_conn_t * conn; char * screenname = (char *)SvPV(ST(2),PL_na); int RETVAL; dXSTARG; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_session_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Session::request_login() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; if( sv_isobject(ST(1)) && (SvTYPE(SvRV(ST(1))) == SVt_PVMG) ) conn = (Aim_conn_t *)SvIV((SV*)SvRV( ST(1) )); else{ warn( "RawLibfaim::Session::request_login() -- conn is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 302 "RawLibfaim.xs" RETVAL = aim_request_login(self,conn,screenname); #line 410 "RawLibfaim.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_RawLibfaim__Session_logoff) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::Session::logoff(self)"); { Aim_session_t * self; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_session_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Session::logoff() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 311 "RawLibfaim.xs" aim_logoff(self); #line 432 "RawLibfaim.c" } XSRETURN_EMPTY; } XS(XS_RawLibfaim__Session_get_command) { dXSARGS; if (items != 2) Perl_croak(aTHX_ "Usage: RawLibfaim::Session::get_command(self, conn)"); { Aim_session_t * self; Aim_conn_t * conn; int RETVAL; dXSTARG; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_session_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Session::get_command() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; if( sv_isobject(ST(1)) && (SvTYPE(SvRV(ST(1))) == SVt_PVMG) ) conn = (Aim_conn_t *)SvIV((SV*)SvRV( ST(1) )); else{ warn( "RawLibfaim::Session::get_command() -- conn is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 319 "RawLibfaim.xs" RETVAL = aim_get_command(self,conn); #line 463 "RawLibfaim.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_RawLibfaim__Session_rxdispatch) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::Session::rxdispatch(self)"); { Aim_session_t * self; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_session_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Session::rxdispatch() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 328 "RawLibfaim.xs" aim_rxdispatch(self); #line 485 "RawLibfaim.c" } XSRETURN_EMPTY; } XS(XS_RawLibfaim__Session_flushqueue) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::Session::flushqueue(self)"); { Aim_session_t * self; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_session_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Session::flushqueue() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 335 "RawLibfaim.xs" aim_tx_flushqueue(self); #line 506 "RawLibfaim.c" } XSRETURN_EMPTY; } XS(XS_RawLibfaim__Connection_new) { dXSARGS; if (items != 4) Perl_croak(aTHX_ "Usage: RawLibfaim::Connection::new(CLASS, sess, type, server)"); { char * CLASS = (char *)SvPV(ST(0),PL_na); Aim_session_t * sess; int type = (int)SvIV(ST(2)); char * server = (char *)SvPV(ST(3),PL_na); Aim_conn_t * RETVAL; if( sv_isobject(ST(1)) && (SvTYPE(SvRV(ST(1))) == SVt_PVMG) ) sess = (Aim_session_t *)SvIV((SV*)SvRV( ST(1) )); else{ warn( "RawLibfaim::Connection::new() -- sess is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 349 "RawLibfaim.xs" RETVAL = aim_newconn(sess,type,server); #line 531 "RawLibfaim.c" ST(0) = sv_newmortal(); sv_setref_pv( ST(0), CLASS, (void*)RETVAL ); } XSRETURN(1); } XS(XS_RawLibfaim__Connection_DESTROY) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::Connection::DESTROY(self)"); { Aim_conn_t * self; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_conn_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Connection::DESTROY() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 357 "RawLibfaim.xs" safefree(self); #line 555 "RawLibfaim.c" } XSRETURN_EMPTY; } XS(XS_RawLibfaim__Connection_kill) { dXSARGS; if (items != 2) Perl_croak(aTHX_ "Usage: RawLibfaim::Connection::kill(self, sess)"); { Aim_conn_t * self; Aim_session_t * sess; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_conn_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Connection::kill() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; if( sv_isobject(ST(1)) && (SvTYPE(SvRV(ST(1))) == SVt_PVMG) ) sess = (Aim_session_t *)SvIV((SV*)SvRV( ST(1) )); else{ warn( "RawLibfaim::Connection::kill() -- sess is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 364 "RawLibfaim.xs" aim_conn_kill(sess,&self); #line 584 "RawLibfaim.c" } XSRETURN_EMPTY; } XS(XS_RawLibfaim__Connection_fd) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::Connection::fd(self)"); { Aim_conn_t * self; int RETVAL; dXSTARG; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_conn_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Connection::fd() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 370 "RawLibfaim.xs" RETVAL = self->fd; #line 607 "RawLibfaim.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_RawLibfaim__Connection_status) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::Connection::status(self)"); { Aim_conn_t * self; int RETVAL; dXSTARG; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_conn_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Connection::status() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 378 "RawLibfaim.xs" RETVAL = self->status; #line 631 "RawLibfaim.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_RawLibfaim__Connection_type) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::Connection::type(self)"); { Aim_conn_t * self; int RETVAL; dXSTARG; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Aim_conn_t *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Connection::type() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 387 "RawLibfaim.xs" RETVAL = self->type; #line 655 "RawLibfaim.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_RawLibfaim__Command_data) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::Command::data(self)"); { Command_rx_struct * self; char * RETVAL; dXSTARG; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) self = (Command_rx_struct *)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::Command::data() -- self is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 401 "RawLibfaim.xs" RETVAL = self->data; #line 679 "RawLibfaim.c" sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; } XSRETURN(1); } XS(XS_RawLibfaim__Util_get16) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::Util::get16(data)"); { char * data = (char *)SvPV(ST(0),PL_na); int RETVAL; dXSTARG; #line 416 "RawLibfaim.xs" RETVAL = aimutil_get16(data); #line 696 "RawLibfaim.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_RawLibfaim__Util_get32) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::Util::get32(data)"); { char * data = (char *)SvPV(ST(0),PL_na); int RETVAL; dXSTARG; #line 424 "RawLibfaim.xs" RETVAL = aimutil_get32(data); #line 713 "RawLibfaim.c" XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_RawLibfaim__VA_get_int) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::VA::get_int(list)"); { va_list list; #line 438 "RawLibfaim.xs" char *CLASS = "RawLibfaim::VA"; #line 728 "RawLibfaim.c" int RETVAL; dXSTARG; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) list = (va_list)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::VA::get_int() -- list is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 440 "RawLibfaim.xs" RETVAL = va_arg(list,int); #line 740 "RawLibfaim.c" sv_setref_pv( ST(0), CLASS, (void*)list ); SvSETMAGIC(ST(0)); XSprePUSH; PUSHi((IV)RETVAL); } XSRETURN(1); } XS(XS_RawLibfaim__VA_get_string) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::VA::get_string(list)"); { va_list list; #line 449 "RawLibfaim.xs" char *CLASS = "RawLibfaim::VA"; #line 758 "RawLibfaim.c" char * RETVAL; dXSTARG; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) list = (va_list)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::VA::get_string() -- list is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 451 "RawLibfaim.xs" RETVAL = va_arg(list,char*); #line 770 "RawLibfaim.c" sv_setref_pv( ST(0), CLASS, (void*)list ); SvSETMAGIC(ST(0)); sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG; } XSRETURN(1); } XS(XS_RawLibfaim__VA_get_conn) { dXSARGS; if (items != 1) Perl_croak(aTHX_ "Usage: RawLibfaim::VA::get_conn(list)"); { va_list list; #line 461 "RawLibfaim.xs" char *CLASS = "RawLibfaim::VA"; #line 788 "RawLibfaim.c" Aim_conn_t * RETVAL; if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) ) list = (va_list)SvIV((SV*)SvRV( ST(0) )); else{ warn( "RawLibfaim::VA::get_conn() -- list is not a blessed SV reference" ); XSRETURN_UNDEF; }; #line 463 "RawLibfaim.xs" RETVAL = va_arg(list,Aim_conn_t *); #line 799 "RawLibfaim.c" sv_setref_pv( ST(0), CLASS, (void*)list ); SvSETMAGIC(ST(0)); ST(0) = sv_newmortal(); sv_setref_pv( ST(0), CLASS, (void*)RETVAL ); } XSRETURN(1); } #ifdef __cplusplus extern "C" #endif XS(boot_RawLibfaim) { dXSARGS; char* file = __FILE__; XS_VERSION_BOOTCHECK ; newXS("RawLibfaim::Session::new", XS_RawLibfaim__Session_new, file); newXS("RawLibfaim::Session::DESTROY", XS_RawLibfaim__Session_DESTROY, file); newXS("RawLibfaim::Session::init", XS_RawLibfaim__Session_init, file); newXS("RawLibfaim::Session::conn_addhandler", XS_RawLibfaim__Session_conn_addhandler, file); newXS("RawLibfaim::Session::select", XS_RawLibfaim__Session_select, file); newXS("RawLibfaim::Session::request_login", XS_RawLibfaim__Session_request_login, file); newXS("RawLibfaim::Session::logoff", XS_RawLibfaim__Session_logoff, file); newXS("RawLibfaim::Session::get_command", XS_RawLibfaim__Session_get_command, file); newXS("RawLibfaim::Session::rxdispatch", XS_RawLibfaim__Session_rxdispatch, file); newXS("RawLibfaim::Session::flushqueue", XS_RawLibfaim__Session_flushqueue, file); newXS("RawLibfaim::Connection::new", XS_RawLibfaim__Connection_new, file); newXS("RawLibfaim::Connection::DESTROY", XS_RawLibfaim__Connection_DESTROY, file); newXS("RawLibfaim::Connection::kill", XS_RawLibfaim__Connection_kill, file); newXS("RawLibfaim::Connection::fd", XS_RawLibfaim__Connection_fd, file); newXS("RawLibfaim::Connection::status", XS_RawLibfaim__Connection_status, file); newXS("RawLibfaim::Connection::type", XS_RawLibfaim__Connection_type, file); newXS("RawLibfaim::Command::data", XS_RawLibfaim__Command_data, file); newXS("RawLibfaim::Util::get16", XS_RawLibfaim__Util_get16, file); newXS("RawLibfaim::Util::get32", XS_RawLibfaim__Util_get32, file); newXS("RawLibfaim::VA::get_int", XS_RawLibfaim__VA_get_int, file); newXS("RawLibfaim::VA::get_string", XS_RawLibfaim__VA_get_string, file); newXS("RawLibfaim::VA::get_conn", XS_RawLibfaim__VA_get_conn, file); XSRETURN_YES; }