BerkeleyDB

 view release on metacpan or  search on metacpan

mkconsts.pl  view on Meta::CPAN

	DB_META_CHKSUM_FAIL        => DEFINE,

	#########
	# 6.1.29
	#########

	DB2_AM_MPOOL_OPENED        => DEFINE,

	#########
	# 6.1.36
	#########

	DB_REGION_MAGIC_RECOVER    => DEFINE,

	#########
	# 6.2.23
	#########

	DB_DBT_EXT_FILE            => IGNORE,
	DB_LOG_EXT_FILE            => DEFINE,
	DB_OFF_T_MAX               => DEFINE,
	DB_REPMGR_CONF_FORWARD_WRITES => DEFINE,
	DB_REP_WRITE_FORWARD_TIMEOUT => DEFINE,
	DB_SLICED                  => DEFINE,
	DB_SLICE_CORRUPT           => DEFINE,
	DB_VERB_SLICE              => DEFINE,

	#########
	# 6.2.32
	#########

	DB_CONVERT                 => DEFINE,

	#########
	# 6.3.10
	#########

	DB_EVENT_REP_AUTOTAKEOVER  => DEFINE,
	DB_REPMGR_CONF_DISABLE_POLL => DEFINE,
	DB_REPMGR_CONF_ENABLE_EPOLL => DEFINE,
	DB_REPMGR_ISELECTABLE      => DEFINE,
	DB_REP_INELECT             => DEFINE,
	DB_SYSTEM_MEM_MISSING      => DEFINE,
	DB_TXN_DISPATCH            => DEFINE,
	HAVE_EPOLL                 => DEFINE,
	TXN_DISPATCH               => IGNORE,

	# enum poll_method_t
	SELECT                     => '6.3.10',
	POLL                       => '6.3.10',
	EPOLL                      => '6.3.10',

	# enum DB_MEM_CONFIG
	DB_MEM_DATABASE            => '6.3.10',
	DB_MEM_DATABASE_LENGTH     => '6.3.10',
	DB_MEM_EXTFILE_DATABASE    => '6.3.10',
	DB_MEM_REP_SITE            => '6.3.10',

	) ;

sub enum_Macro
{
    my $str = shift ;
    my ($major, $minor, $patch) = split /\./, $str ;

    my $macro =
    "#if (DB_VERSION_MAJOR > $major) || \\\n" .
    "    (DB_VERSION_MAJOR == $major && DB_VERSION_MINOR > $minor) || \\\n" .
    "    (DB_VERSION_MAJOR == $major && DB_VERSION_MINOR == $minor && \\\n" .
    "     DB_VERSION_PATCH >= $patch)\n" ;

    return $macro;

}

sub OutputXS
{

    my @names = () ;

    foreach my $key (sort keys %constants)
    {
        my $val = $constants{$key} ;
        next if $val eq IGNORE;

        if ($val eq STRING)
          { push @names, { name => $key, type => "PV" } }
        elsif ($val eq DEFINE)
          { push @names, $key }
        else
          { push @names, { name => $key, macro => [enum_Macro($val), "#endif\n"] } }
    }

    warn "Updating constants.xs & constants.h...\n";
    WriteConstants(
              NAME    => BerkeleyDB,
              NAMES   => \@names,
              C_FILE  => 'constants.h',
              XS_FILE => 'constants.xs',
          ) ;
}

sub OutputPM
{
    my $filename = 'BerkeleyDB.pm';
    warn "Updating $filename...\n";
    open IN, "<$filename" || die "Cannot open $filename: $!\n";
    open OUT, ">$filename.tmp" || die "Cannot open $filename.tmp: $!\n";

    my $START = '@EXPORT = qw(' ;
    my $START_re = quotemeta $START ;
    my $END = ');';
    my $END_re = quotemeta $END ;

    # skip to the @EXPORT declaration
    OUTER: while (<IN>)
    {
        if ( /^\s*$START_re/ )
        {
            # skip to the end marker.
            while (<IN>)
                { last OUTER if /^\s*$END_re/ }
        }
        print OUT ;
    }

    print OUT "$START\n";
    foreach my $key (sort keys %constants)
    {
        next if $constants{$key} eq IGNORE;
	print OUT "\t$key\n";
    }
    print OUT "\t$END\n";

    while (<IN>)
    {
        print OUT ;
    }

    close IN;
    close OUT;

    rename $filename, "$filename.bak" || die "Cannot rename $filename: $!\n" ;
    rename "$filename.tmp", $filename || die "Cannot rename $filename.tmp: $!\n" ;
}

OutputXS() ;
OutputPM() ;



( run in 0.873 second using v1.01-cache-2.11-cpan-39bf76dae61 )