GNU/Linux |
Debian 6.0.5(Squeeze) |
|
![]() |
ModPerl::Code(3pm) |
![]() |
$class\::Const − Perl Interface for $class Constants
EOF
my $groups = $data{$class}; for my $group (sort keys %$groups) { print $fh <<"EOF";
":$group"
use $class\::Const −compile qw(:$group);
The ":$group" group is for XXX constants.
EOF
for my $const (sort @{ $groups−>{$group} }) { print $fh "=head3 C<$class\::$const>\n\n\n"; } } print $fh "=cut\n"; } }
sub
generate_constants_lookup_doc {
my ($data) = @_;
while (my ($class, $groups) = each %$Apache2::ConstantsTable) { my $constants = [map { @$_ } values %$groups]; constants_lookup_code_doc($constants, $class, $data); } }
sub
generate_constants_group_lookup_doc {
my ($data) = @_;
while (my ($class, $groups) = each %$Apache2::ConstantsTable) { constants_group_lookup_code_doc($class, $groups, $data); } }
sub
constants_group_lookup_code_doc {
my ($class, $groups, $data) = @_;
my @tags;
my @code;
while (my ($group, $constants) = each %$groups) { $data−>{$class}{$group} = [ map { my @ifdef = constants_ifdef($_); s/^($constant_prefixes)_?//o; $seen_const{$class}{$_}++; $_; } @$constants ]; } }
sub
constants_lookup_code_doc {
my ($constants, $class, $data) =
@_;
my (%switch, %alias); %alias = %shortcuts; my $postfix = lc $class; my $package = $class . '::'; my $package_len = length $package; my $func = canon_func(qw(constants lookup), $postfix); for (@$constants) { if (s/^($constant_prefixes)(_)?//o) { $alias{$_} = join $2 || "", $1, $_; } else { $alias{$_} ||= $_; } next unless /^([A−Z])/; push @{ $switch{$1} }, $_; } for my $key (sort keys %switch) { my $names = $switch{$key}; for my $name (@$names) { my @ifdef = constants_ifdef($alias{$name}); push @{ $data−>{$class}{other} }, $name unless $seen_const{$class}{$name} } } }
sub
generate_exports {
my ($self, $c_fh) = @_;
require ModPerl::WrapXS;
ModPerl::WrapXS−>generate_exports($c_fh); }
#
src/modules/perl/*.c files needed to build APR/APR::*
outside # of mod_perl.so sub src_apr_ext {
return map { "modperl_$_" } (qw(error bucket),
map { "common_$_" } qw(util log)); }
1; __END__
ModPerl::Code − Generate mod_perl glue code
use ModPerl::Code (); my $code = ModPerl::Code−>new; $code−>generate;
This module
provides functionality for generating mod_perl glue code.
Reason this code is generated rather than written by hand
include:
consistency
thin and clean glue code
enable/disable features (without #ifdefs)
adapt to changes in Apache
experiment with different approaches to gluing
Doug MacEachern
![]() |
ModPerl::Code(3pm) | ![]() |