The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
#
# GDA.pm
#
# $Revision: 1.3 $
#
# TODO:
#
#   * Don't hardcode the app name, etc. in init().
#
# Copyright (C) 2001 Gregor N. Purdy. All rights reserved.
#
# This program is free software. It may be modified and/or
# distributed under the same terms as Perl itself.
#

use strict;

package GDA;

use Carp;

use vars qw($VERSION);
$VERSION = '0.2';

use Inline 'C';

use Inline 'C' => Config =>
  INC          => '-I/usr/include/gda -I/usr/include/glib-1.2 -I/usr/lib/glib/include -I/usr/include/gtk-1.2 -I/usr/include/gnome-xml',
  AUTO_INCLUDE => '#include "gda-config.h"',
  LIBS         => '-lgda-common';

  Inline->init;

my $imported = 0;

sub import
{
  my $package = shift;

  return if $imported;

  croak "GDA.pm: usage: use GDA <app>, <ver>, ...;\n"
    . "  Caller did: use GDA " . join(', ', map { "'$_'" } @_) . ";\n"
    . "  (If this message is for a GDA::* module, perhaps you forgot to\n"
    . "  'use GDA ...' in your main program?)"  unless @_ >= 2;

  my $app = shift;
  my $ver = shift;

  my $prog;

  if (@_) {
    $prog = shift;
  } else {
    $prog = $0;
  }
 
  # TODO: Why were we getting undefs in the first place ('under make test')?

  $app  = '<undef>' if not defined $app;
  $ver  = '<undef>' if not defined $ver;
  $prog = '<undef>' if not defined $prog;

  init($app, $ver, $prog);
  $imported++;
}

sub imported
{
  return $imported;
}

1;

=head1 NAME

GDA - GNU Data Access library Perl bindings

=head1 SYNOPSIS

  use GDA 'my_app', 'my_version', 'my_progname';

Initializes the underlying C<libgda> library.

See the other B<GDA::*> modules for the real functionality.

=head1 DESCRIPTION

A suite of Perl modules which wrap the C<libgda> library's API.

You must

  use GDA ...;

before using any of the other B<GDA> modules. If you don't, you'll get
complaints from the B<GDA> module (at best), or crashes and core dumps
(at worst).

=head1 SEE ALSO

B<GDA::Config>, B<GDA::DSN>, B<GDA::Log> and B<GDA::Provider>.

=head1 AUTHOR

Gregor N. Purdy E<lt>gregor@focusresearch.comE<gt>

=head1 LICENSE

This program is free software. It may be modified and/or
distributed under the same terms as Perl itself.

=head1 COPYRIGHT

Copyright (C) 2001 Gregor N. Purdy. All rights reserved.

=cut

__DATA__
__C__


void init(char * app, char * ver, char * prog)
{
  int argc = 1;
  char * argv [] = { prog, NULL };

  gda_init(app, ver, argc, argv); /* TODO: Who owns these strings? */
}


/*
** EOF
*/