Help-Site Computer Manuals
Software
Hardware
Programming
Networking
  Algorithms & Data Structures   Programming Languages   Revision Control
  Protocols
  Cameras   Computers   Displays   Keyboards & Mice   Motherboards   Networking   Printers & Scanners   Storage
  Windows   Linux & Unix   Mac

$class\::Const
Perl Interface for $class Constants

$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} }, $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__


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

Programminig
Wy
Wy
yW
Wy
Programming
Wy
Wy
Wy
Wy