summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embed.fnc4
-rw-r--r--mro_core.c20
2 files changed, 22 insertions, 2 deletions
diff --git a/embed.fnc b/embed.fnc
index 3409dd13e9..06b5eff6ee 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -3633,9 +3633,9 @@ Coph |SV* |mro_get_private_data|NN struct mro_meta *const smeta \
Aopdh |SV* |mro_set_private_data|NN struct mro_meta *const smeta \
|NN const struct mro_alg *const which \
|NN SV *const data
-Aop |const struct mro_alg *|mro_get_from_name|NN SV *name
+Aopd |const struct mro_alg *|mro_get_from_name|NN SV *name
Aopd |void |mro_register |NN const struct mro_alg *mro
-Aop |void |mro_set_mro |NN struct mro_meta *const meta \
+Aopd |void |mro_set_mro |NN struct mro_meta *const meta \
|NN SV *const name
: Used in HvMROMETA(), which is public.
Xpo |struct mro_meta* |mro_meta_init |NN HV* stash
diff --git a/mro_core.c b/mro_core.c
index 85c40db2b5..42a11af035 100644
--- a/mro_core.c
+++ b/mro_core.c
@@ -102,6 +102,15 @@ Perl_mro_set_private_data(pTHX_ struct mro_meta *const smeta,
return data;
}
+/*
+=for apidoc mro_get_from_name
+
+Returns the previously registered mro with the given C<name>, or NULL if not
+registered. See L</C<mro_register>>.
+
+=cut
+*/
+
const struct mro_alg *
Perl_mro_get_from_name(pTHX_ SV *name) {
SV **data;
@@ -1369,6 +1378,17 @@ Perl_mro_method_changed_in(pTHX_ HV *stash)
HvAUX(stash)->xhv_aux_flags &= ~HvAUXf_NO_DEREF;
}
+/*
+=for apidoc mro_set_mro
+
+Set C<meta> to the value contained in the registered mro plugin whose name is
+C<name>.
+
+Croaks if C<name> hasn't been registered
+
+=cut
+*/
+
void
Perl_mro_set_mro(pTHX_ struct mro_meta *const meta, SV *const name)
{