130 lines
3.1 KiB
Perl
130 lines
3.1 KiB
Perl
#============================================================= -*-Perl-*-
|
|
#
|
|
# Template::Stash::XS
|
|
#
|
|
# DESCRIPTION
|
|
#
|
|
# Perl bootstrap for XS module. Inherits methods from
|
|
# Template::Stash when not implemented in the XS module.
|
|
#
|
|
#========================================================================
|
|
|
|
package Template::Stash::XS;
|
|
|
|
use strict;
|
|
use warnings;
|
|
use Template;
|
|
use Template::Stash;
|
|
use XSLoader;
|
|
|
|
our $AUTOLOAD;
|
|
|
|
our @ISA = qw( Template::Stash );
|
|
|
|
XSLoader::load 'Template::Stash::XS', $Template::VERSION;
|
|
|
|
sub DESTROY {
|
|
# no op
|
|
1;
|
|
}
|
|
|
|
# catch missing method calls here so perl doesn't barf
|
|
# trying to load *.al files
|
|
|
|
sub AUTOLOAD {
|
|
my ($self, @args) = @_;
|
|
my @c = caller(0);
|
|
my $auto = $AUTOLOAD;
|
|
|
|
$auto =~ s/.*:://;
|
|
$self =~ s/=.*//;
|
|
|
|
die "Can't locate object method \"$auto\"" .
|
|
" via package \"$self\" at $c[1] line $c[2]\n";
|
|
}
|
|
|
|
1;
|
|
|
|
__END__
|
|
|
|
=head1 NAME
|
|
|
|
Template::Stash::XS - High-speed variable stash written in C
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
use Template;
|
|
use Template::Stash::XS;
|
|
|
|
my $stash = Template::Stash::XS->new(\%vars);
|
|
my $tt2 = Template->new({ STASH => $stash });
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
The Template:Stash::XS module is an implementation of the
|
|
Template::Stash written in C. The "XS" in the name refers to Perl's
|
|
XS extension system for interfacing Perl to C code. It works just
|
|
like the regular Perl implementation of Template::Stash but runs about
|
|
twice as fast.
|
|
|
|
The easiest way to use the XS stash is to configure the Template
|
|
Toolkit to use it by default. You can do this at installation time
|
|
(when you run C<perl Makefile.PL>) by answering 'y' to the questions:
|
|
|
|
Do you want to build the XS Stash module? y
|
|
Do you want to use the XS Stash by default? y
|
|
|
|
See the F<INSTALL> file distributed with the Template Toolkit for further
|
|
details on installation.
|
|
|
|
If you don't elect to use the XS stash by default then you should use
|
|
the C<STASH> configuration item when you create a new Template object.
|
|
This should reference an XS stash object that you have created
|
|
manually.
|
|
|
|
use Template;
|
|
use Template::Stash::XS;
|
|
|
|
my $stash = Template::Stash::XS->new(\%vars);
|
|
my $tt2 = Template->new({ STASH => $stash });
|
|
|
|
Alternately, you can set the C<$Template::Config::STASH> package
|
|
variable like so:
|
|
|
|
use Template;
|
|
use Template::Config;
|
|
|
|
$Template::Config::STASH = 'Template::Stash::XS';
|
|
|
|
my $tt2 = Template->new();
|
|
|
|
The XS stash will then be automatically used.
|
|
|
|
If you want to use the XS stash by default and don't want to
|
|
re-install the Template Toolkit, then you can manually modify the
|
|
C<Template/Config.pm> module near line 42 to read:
|
|
|
|
$STASH = 'Template::Stash::XS';
|
|
|
|
=head1 BUGS
|
|
|
|
Please report bugs to the Template Toolkit mailing list
|
|
templates@template-toolkit.org
|
|
|
|
=head1 AUTHORS
|
|
|
|
Andy Wardley E<lt>abw@wardley.orgE<gt> L<http://wardley.org/>
|
|
|
|
Doug Steinwand E<lt>dsteinwand@citysearch.comE<gt>
|
|
|
|
=head1 COPYRIGHT
|
|
|
|
Copyright (C) 1996-2013 Andy Wardley. All Rights Reserved.
|
|
|
|
This module is free software; you can redistribute it and/or
|
|
modify it under the same terms as Perl itself.
|
|
|
|
=head1 SEE ALSO
|
|
|
|
L<Template::Stash>
|