Explictly export Perl_mro_meta_init() so that HvMROMETA() can become part of the
Nicholas Clark [Fri, 26 Dec 2008 21:31:47 +0000 (21:31 +0000)]
public API and be used outside the core. However, leave Perl_mro_meta_init() as
a private implementation detail.

embed.fnc
embed.h
global.sym
hv.h

index 87f5fd2..7c81888 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -2191,8 +2191,8 @@ Aop       |SV*    |mro_set_private_data|NN struct mro_meta *const smeta \
                                     |NN SV *const data
 Aop    |const struct mro_alg *|mro_get_from_name|NN SV *name
 Aop    |void   |mro_register   |NN const struct mro_alg *mro
-: Used in HvMROMETA() in gv.c, pp_hot.c, universal.c
-p      |struct mro_meta*       |mro_meta_init  |NN HV* stash
+: Used in HvMROMETA(), which is public.
+Xpo    |struct mro_meta*       |mro_meta_init  |NN HV* stash
 #if defined(USE_ITHREADS)
 : Only used in sv.c
 p      |struct mro_meta*       |mro_meta_dup   |NN struct mro_meta* smeta|NN CLONE_PARAMS* param
diff --git a/embed.h b/embed.h
index a136947..b7fd171 100644 (file)
--- a/embed.h
+++ b/embed.h
 #endif
 #if !defined(HAS_SIGNBIT)
 #endif
-#ifdef PERL_CORE
-#define mro_meta_init          Perl_mro_meta_init
-#endif
 #if defined(USE_ITHREADS)
 #ifdef PERL_CORE
 #define mro_meta_dup           Perl_mro_meta_dup
 #if defined(PERL_CORE) || defined(PERL_EXT)
 #endif
 #ifdef PERL_CORE
-#define mro_meta_init(a)       Perl_mro_meta_init(aTHX_ a)
 #endif
 #if defined(USE_ITHREADS)
 #ifdef PERL_CORE
index 3ac872d..2745823 100644 (file)
@@ -773,6 +773,7 @@ Perl_mro_get_private_data
 Perl_mro_set_private_data
 Perl_mro_get_from_name
 Perl_mro_register
+Perl_mro_meta_init
 Perl_mro_get_linear_isa
 Perl_mro_method_changed_in
 Perl_sys_init
diff --git a/hv.h b/hv.h
index 1481d5b..e120dd4 100644 (file)
--- a/hv.h
+++ b/hv.h
@@ -261,7 +261,7 @@ C<SV*>.
    caller's responsibility */
 #define HvMROMETA(hv) (HvAUX(hv)->xhv_mro_meta \
                        ? HvAUX(hv)->xhv_mro_meta \
-                       : mro_meta_init(hv))
+                       : Perl_mro_meta_init(aTHX_ hv))
 
 /* FIXME - all of these should use a UTF8 aware API, which should also involve
    getting the length. */