ModPerl::Code(3pm)
NAME
$class\::Const - Perl Interface for $class Constants
SYNOPSIS
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} }, $nameunless $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__
NAME
ModPerl::Code - Generate mod_perl glue code
SYNOPSIS
use ModPerl::Code (); my $code = ModPerl::Code->new; $code->generate;
DESCRIPTION
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
AUTHOR
- Doug MacEachern