On Mon, Oct 20, 2003 at 07:15:11PM -0700, Dean Arnold wrote: > Coupla points: > > 1. After (painful) experimentation with Inline::Struct, I've determined > it's got some significant short comings at this time <heavy sigh> > > 2. Howver, for my purposes, with Inline::C and some clever editting > (thank you TextPad!) I can emulate most of Inline::Struct > and probably do so in a more code optimal fashion. > > 3. As for Perl vs. C code, I abstain, as I haven't visited this > particular soil in some time. My only perspective is > from hacking DBD::ODBC some 3 years ago for > array binding, and it was kinda painful for a newbie then. > > 4. That being said, if your API is based on simple C > primitives, Inline::C might be an attractive solution...but > beware of array or non-primitive inputs!
Here's the interface between Driver.xst and your code. Just implement (most of) these functions: void dbd_init _((dbistate_t *dbistate)); int dbd_db_login _((SV *dbh, imp_dbh_t *imp_dbh, char *dbname, char *user, char *pwd)); int dbd_db_login6 _((SV *dbh, imp_dbh_t *imp_dbh, char *dbname, char *user, char *pwd, SV *attr)); int dbd_db_do _((SV *sv, char *statement)); int dbd_db_commit _((SV *dbh, imp_dbh_t *imp_dbh)); int dbd_db_rollback _((SV *dbh, imp_dbh_t *imp_dbh)); int dbd_db_disconnect _((SV *dbh, imp_dbh_t *imp_dbh)); void dbd_db_destroy _((SV *dbh, imp_dbh_t *imp_dbh)); int dbd_db_STORE_attrib _((SV *dbh, imp_dbh_t *imp_dbh, SV *keysv, SV *valuesv)); SV *dbd_db_FETCH_attrib _((SV *dbh, imp_dbh_t *imp_dbh, SV *keysv)); int dbd_st_prepare _((SV *sth, imp_sth_t *imp_sth, char *statement, SV *attribs)); int dbd_st_rows _((SV *sth, imp_sth_t *imp_sth)); int dbd_st_execute _((SV *sth, imp_sth_t *imp_sth)); int dbd_st_cancel _((SV *sth, imp_sth_t *imp_sth)); AV *dbd_st_fetch _((SV *sth, imp_sth_t *imp_sth)); int dbd_st_finish _((SV *sth, imp_sth_t *imp_sth)); void dbd_st_destroy _((SV *sth, imp_sth_t *imp_sth)); int dbd_st_STORE_attrib _((SV *sth, imp_sth_t *imp_sth, SV *keysv, SV *valuesv)); SV *dbd_st_FETCH_attrib _((SV *sth, imp_sth_t *imp_sth, SV *keysv)); int dbd_bind_ph _((SV *sth, imp_sth_t *imp_sth, SV *param, SV *value, IV sql_type, SV *attribs, int is_inout, IV maxlen)); See perldoc DBI::DBD for more info. Tim.