> On Thu, Oct 16, 2003 at 02:12:36PM -0700, Dean Arnold wrote:
> > Has anyone attempted to write a DBD
> > using Inline::C (or C++) ? I'm looking into updating a driver
> > to selectively switch between a pure Perl implementation,
> > and a native C i/f to a low level vendor API library if its available, in order
> > to get more performance/functionality. Inline::C looked 
> > like an attractive alternative (esp w/ Inline::Struct) to all the XS 
> > madness. This would allow the driver to exploit Perl's 
> > strenghts for parsing SQL, mapping things w/ hashes, etc, but
> > use the vendor lib for the low level data movement, as opposed
> > to writing a complete DBD in C/XS.
> 
> I don't think any DBD is pure C/XS. All have a significant amount of perl.
> 
> Driver authors wanting to use C don't have to write _any_ XS if they
> use the Driver.xst template mechanism (which is strongly recommended).
> 
> Then just add some logic around the "bootstrap()" method call in
> the .pm file. The .pm file can implement the same methods as the
> C/XS code and, if the c/XS code hasn't been bootstraped, then the
> perl methods will be called instead. Simple.
> 
> Tim.


Hmmm, guess its been a while since I've hacked on DBD::ODBC,
but it sure seemed like a lot of XS and C. But I was very much an XS
newbie at the time, so perhaps my view is jaundiced.

Perhaps my question is also colored by the fact that I already
have a pure Perl driver, and am just looking to adapt to a vendor
lib for the low-level protocol calls. This notion probably arises from
Inline::Struct more than Inline::C, since the API I'm using
is driven primarily from a well-defined 'C' struct, with just a handful
of method calls. Based on Inline::Struct's POD, it seems pretty
easy to directly manipulate a C struct directly from Perl, then
make a simple Inline::C function wrapper (with a tiny bit
of perlguts'ness) to drive the execution.

And now I'm designing out loud, so I'll shut up...but will still likely
pursue this concept; it probably wouldn't work well for other function-based
APIs like ODBC, but for data structure driven APIs, esp from a pre-existing
pure Perl driver, it looks promising.

Thanks,
Dean Arnold
Presicient Corp.
www.presicient.com

Reply via email to