__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
=head1 NAME
perlmroapi - Perl method resolution plugin interface
=head1 DESCRIPTION
As of Perl 5.10.1 there is a new interface for plugging and using method
resolution orders other than the default (linear depth first search).
The C3 method resolution order added in 5.10.0 has been re-implemented as
a plugin, without changing its Perl-space interface.
Each plugin should register itself by providing
the following structure
struct mro_alg {
AV *(*resolve)(pTHX_ HV *stash, U32 level);
const char *name;
U16 length;
U16 kflags;
U32 hash;
};
and calling C<Perl_mro_register>:
Perl_mro_register(aTHX_ &my_mro_alg);
=over 4
=item resolve
Pointer to the linearisation function, described below.
=item name
Name of the MRO, either in ISO-8859-1 or UTF-8.
=item length
Length of the name.
=item kflags
If the name is given in UTF-8, set this to C<HVhek_UTF8>. The value is passed
direct as the parameter I<kflags> to C<hv_common()>.
=item hash
A precomputed hash value for the MRO's name, or 0.
=back
=head1 Callbacks
The C<resolve> function is called to generate a linearised ISA for the
given stash, using this MRO. It is called with a pointer to the stash, and
a I<level> of 0. The core always sets I<level> to 0 when it calls your
function - the parameter is provided to allow your implementation to track
depth if it needs to recurse.
The function should return a reference to an array containing the parent
classes in order. The names of the classes should be the result of calling
C<HvENAME()> on the stash. In those cases where C<HvENAME()> returns null,
C<HvNAME()> should be used instead.
The caller is responsible for incrementing the reference count of the array
returned if it wants to keep the structure. Hence, if you have created a
temporary value that you keep no pointer to, C<sv_2mortal()> to ensure that
it is disposed of correctly. If you have cached your return value, then
return a pointer to it without changing the reference count.
=head1 Caching
Computing MROs can be expensive. The implementation provides a cache, in
which you can store a single C<SV *>, or anything that can be cast to
C<SV *>, such as C<AV *>. To read your private value, use the macro
C<MRO_GET_PRIVATE_DATA()>, passing it the C<mro_meta> structure from the
stash, and a pointer to your C<mro_alg> structure:
meta = HvMROMETA(stash);
private_sv = MRO_GET_PRIVATE_DATA(meta, &my_mro_alg);
To set your private value, call C<Perl_mro_set_private_data()>:
Perl_mro_set_private_data(aTHX_ meta, &c3_alg, private_sv);
The private data cache will take ownership of a reference to private_sv,
much the same way that C<hv_store()> takes ownership of a reference to the
value that you pass it.
=head1 Examples
For examples of MRO implementations, see C<S_mro_get_linear_isa_c3()>
and the C<BOOT:> section of F<mro/mro.xs>, and C<S_mro_get_linear_isa_dfs()>
in F<mro.c>
=head1 AUTHORS
The implementation of the C3 MRO and switchable MROs within the perl core was
written by Brandon L Black. Nicholas Clark created the pluggable interface,
refactored Brandon's implementation to work with it, and wrote this document.
=cut
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| a2p.pod | File | 5.96 KB | 0644 |
|
| perl.pod | File | 15.43 KB | 0644 |
|
| perl5004delta.pod | File | 54.92 KB | 0644 |
|
| perl5005delta.pod | File | 33.48 KB | 0644 |
|
| perl5100delta.pod | File | 53.41 KB | 0644 |
|
| perl5101delta.pod | File | 42.86 KB | 0644 |
|
| perl5120delta.pod | File | 87.19 KB | 0644 |
|
| perl5121delta.pod | File | 9.91 KB | 0644 |
|
| perl5122delta.pod | File | 9.38 KB | 0644 |
|
| perl5123delta.pod | File | 4 KB | 0644 |
|
| perl5124delta.pod | File | 3.59 KB | 0644 |
|
| perl5140delta.pod | File | 140.94 KB | 0644 |
|
| perl5141delta.pod | File | 7.78 KB | 0644 |
|
| perl5142delta.pod | File | 6.73 KB | 0644 |
|
| perl5143delta.pod | File | 7.58 KB | 0644 |
|
| perl5160delta.pod | File | 130.52 KB | 0644 |
|
| perl5161delta.pod | File | 6 KB | 0644 |
|
| perl5162delta.pod | File | 3.51 KB | 0644 |
|
| perl5163delta.pod | File | 3.99 KB | 0644 |
|
| perl561delta.pod | File | 121.79 KB | 0644 |
|
| perl56delta.pod | File | 104.68 KB | 0644 |
|
| perl581delta.pod | File | 37.17 KB | 0644 |
|
| perl582delta.pod | File | 4.37 KB | 0644 |
|
| perl583delta.pod | File | 6.19 KB | 0644 |
|
| perl584delta.pod | File | 7.19 KB | 0644 |
|
| perl585delta.pod | File | 5.75 KB | 0644 |
|
| perl586delta.pod | File | 4.54 KB | 0644 |
|
| perl587delta.pod | File | 8.16 KB | 0644 |
|
| perl588delta.pod | File | 24.68 KB | 0644 |
|
| perl589delta.pod | File | 52.64 KB | 0644 |
|
| perl58delta.pod | File | 112.21 KB | 0644 |
|
| perlaix.pod | File | 18.77 KB | 0644 |
|
| perlamiga.pod | File | 6.87 KB | 0644 |
|
| perlapi.pod | File | 315.46 KB | 0644 |
|
| perlapio.pod | File | 18.88 KB | 0644 |
|
| perlartistic.pod | File | 6.85 KB | 0644 |
|
| perlbeos.pod | File | 2.87 KB | 0644 |
|
| perlbook.pod | File | 7.19 KB | 0644 |
|
| perlboot.pod | File | 183 B | 0644 |
|
| perlbot.pod | File | 182 B | 0644 |
|
| perlbs2000.pod | File | 7.73 KB | 0644 |
|
| perlcall.pod | File | 54.03 KB | 0644 |
|
| perlce.pod | File | 8.72 KB | 0644 |
|
| perlcheat.pod | File | 4.39 KB | 0644 |
|
| perlclib.pod | File | 7.5 KB | 0644 |
|
| perlcn.pod | File | 4.82 KB | 0644 |
|
| perlcommunity.pod | File | 6.29 KB | 0644 |
|
| perlcygwin.pod | File | 27.17 KB | 0644 |
|
| perldata.pod | File | 36.33 KB | 0644 |
|
| perldbmfilter.pod | File | 4.86 KB | 0644 |
|
| perldebguts.pod | File | 36.79 KB | 0644 |
|
| perldebtut.pod | File | 20.79 KB | 0644 |
|
| perldebug.pod | File | 38.15 KB | 0644 |
|
| perldelta.pod | File | 3.99 KB | 0644 |
|
| perldgux.pod | File | 2.75 KB | 0644 |
|
| perldiag.pod | File | 207.82 KB | 0644 |
|
| perldos.pod | File | 10.28 KB | 0644 |
|
| perldsc.pod | File | 24.84 KB | 0644 |
|
| perldtrace.pod | File | 6.21 KB | 0644 |
|
| perlebcdic.pod | File | 67.61 KB | 0644 |
|
| perlembed.pod | File | 35.21 KB | 0644 |
|
| perlepoc.pod | File | 3.57 KB | 0644 |
|
| perlexperiment.pod | File | 4.84 KB | 0644 |
|
| perlfaq.pod | File | 22.01 KB | 0644 |
|
| perlfaq1.pod | File | 13.52 KB | 0644 |
|
| perlfaq2.pod | File | 9.28 KB | 0644 |
|
| perlfaq3.pod | File | 37.46 KB | 0644 |
|
| perlfaq4.pod | File | 87.39 KB | 0644 |
|
| perlfaq5.pod | File | 54.11 KB | 0644 |
|
| perlfaq6.pod | File | 38.66 KB | 0644 |
|
| perlfaq7.pod | File | 36.35 KB | 0644 |
|
| perlfaq8.pod | File | 48.28 KB | 0644 |
|
| perlfaq9.pod | File | 14.71 KB | 0644 |
|
| perlfork.pod | File | 12.78 KB | 0644 |
|
| perlform.pod | File | 16.29 KB | 0644 |
|
| perlfreebsd.pod | File | 1.55 KB | 0644 |
|
| perlfunc.pod | File | 338.43 KB | 0644 |
|
| perlgit.pod | File | 29.75 KB | 0644 |
|
| perlglossary.pod | File | 110.66 KB | 0644 |
|
| perlgpl.pod | File | 13.54 KB | 0644 |
|
| perlguts.pod | File | 111.66 KB | 0644 |
|
| perlhack.pod | File | 35.03 KB | 0644 |
|
| perlhacktips.pod | File | 45.5 KB | 0644 |
|
| perlhacktut.pod | File | 6.07 KB | 0644 |
|
| perlhaiku.pod | File | 1.47 KB | 0644 |
|
| perlhist.pod | File | 43.32 KB | 0644 |
|
| perlhpux.pod | File | 28.07 KB | 0644 |
|
| perlhurd.pod | File | 1.94 KB | 0644 |
|
| perlintern.pod | File | 42.53 KB | 0644 |
|
| perlinterp.pod | File | 30 KB | 0644 |
|
| perlintro.pod | File | 22.08 KB | 0644 |
|
| perliol.pod | File | 33.03 KB | 0644 |
|
| perlipc.pod | File | 70.17 KB | 0644 |
|
| perlirix.pod | File | 4.29 KB | 0644 |
|
| perljp.pod | File | 7.57 KB | 0644 |
|
| perlko.pod | File | 7.52 KB | 0644 |
|
| perllexwarn.pod | File | 14.61 KB | 0644 |
|
| perllinux.pod | File | 1.45 KB | 0644 |
|
| perllocale.pod | File | 51.43 KB | 0644 |
|
| perllol.pod | File | 10.93 KB | 0644 |
|
| perlmacos.pod | File | 1001 B | 0644 |
|
| perlmacosx.pod | File | 10.4 KB | 0644 |
|
| perlmod.pod | File | 24.04 KB | 0644 |
|
| perlmodinstall.pod | File | 12.41 KB | 0644 |
|
| perlmodlib.pod | File | 78.49 KB | 0644 |
|
| perlmodstyle.pod | File | 20.76 KB | 0644 |
|
| perlmpeix.pod | File | 14.24 KB | 0644 |
|
| perlmroapi.pod | File | 3.13 KB | 0644 |
|
| perlnetware.pod | File | 6.35 KB | 0644 |
|
| perlnewmod.pod | File | 10.95 KB | 0644 |
|
| perlnumber.pod | File | 8.16 KB | 0644 |
|
| perlobj.pod | File | 33.65 KB | 0644 |
|
| perlootut.pod | File | 25.6 KB | 0644 |
|
| perlop.pod | File | 121.73 KB | 0644 |
|
| perlopenbsd.pod | File | 1.18 KB | 0644 |
|
| perlopentut.pod | File | 37.53 KB | 0644 |
|
| perlos2.pod | File | 90.53 KB | 0644 |
|
| perlos390.pod | File | 15.2 KB | 0644 |
|
| perlos400.pod | File | 4.51 KB | 0644 |
|
| perlpacktut.pod | File | 49.83 KB | 0644 |
|
| perlperf.pod | File | 50.05 KB | 0644 |
|
| perlplan9.pod | File | 5 KB | 0644 |
|
| perlpod.pod | File | 21.27 KB | 0644 |
|
| perlpodspec.pod | File | 66.2 KB | 0644 |
|
| perlpolicy.pod | File | 19.73 KB | 0644 |
|
| perlport.pod | File | 82.63 KB | 0644 |
|
| perlpragma.pod | File | 5.11 KB | 0644 |
|
| perlqnx.pod | File | 4.14 KB | 0644 |
|
| perlre.pod | File | 100.76 KB | 0644 |
|
| perlreapi.pod | File | 25.17 KB | 0644 |
|
| perlrebackslash.pod | File | 25.64 KB | 0644 |
|
| perlrecharclass.pod | File | 34.19 KB | 0644 |
|
| perlref.pod | File | 28.32 KB | 0644 |
|
| perlreftut.pod | File | 18.23 KB | 0644 |
|
| perlreguts.pod | File | 36 KB | 0644 |
|
| perlrequick.pod | File | 17.5 KB | 0644 |
|
| perlreref.pod | File | 14.19 KB | 0644 |
|
| perlretut.pod | File | 115.13 KB | 0644 |
|
| perlriscos.pod | File | 1.49 KB | 0644 |
|
| perlrun.pod | File | 49.58 KB | 0644 |
|
| perlsec.pod | File | 22.77 KB | 0644 |
|
| perlsolaris.pod | File | 28.63 KB | 0644 |
|
| perlsource.pod | File | 6.19 KB | 0644 |
|
| perlstyle.pod | File | 8.42 KB | 0644 |
|
| perlsub.pod | File | 55.15 KB | 0644 |
|
| perlsymbian.pod | File | 15.44 KB | 0644 |
|
| perlsyn.pod | File | 41.04 KB | 0644 |
|
| perlthrtut.pod | File | 45.41 KB | 0644 |
|
| perltie.pod | File | 37.02 KB | 0644 |
|
| perltoc.pod | File | 639 KB | 0644 |
|
| perltodo.pod | File | 362 B | 0644 |
|
| perltooc.pod | File | 183 B | 0644 |
|
| perltoot.pod | File | 183 B | 0644 |
|
| perltrap.pod | File | 40.28 KB | 0644 |
|
| perltru64.pod | File | 7.55 KB | 0644 |
|
| perltw.pod | File | 5.15 KB | 0644 |
|
| perlunicode.pod | File | 70.89 KB | 0644 |
|
| perlunifaq.pod | File | 13.31 KB | 0644 |
|
| perluniintro.pod | File | 35.44 KB | 0644 |
|
| perluniprops.pod | File | 229.74 KB | 0644 |
|
| perlunitut.pod | File | 7.76 KB | 0644 |
|
| perlutil.pod | File | 9.68 KB | 0644 |
|
| perluts.pod | File | 3.11 KB | 0644 |
|
| perlvar.pod | File | 69.19 KB | 0644 |
|
| perlvmesa.pod | File | 3.88 KB | 0644 |
|
| perlvms.pod | File | 51.33 KB | 0644 |
|
| perlvos.pod | File | 5.82 KB | 0644 |
|
| perlwin32.pod | File | 34.58 KB | 0644 |
|
| perlxs.pod | File | 71.66 KB | 0644 |
|
| perlxstut.pod | File | 48.52 KB | 0644 |
|
| perlxstypemap.pod | File | 22.97 KB | 0644 |
|