gperl-gtypes.h   gperl-gtypes.h 
skipping to change at line 82 skipping to change at line 82
#define GPERL_TYPE_SHELL_ERROR gperl_shell_error_get_type () #define GPERL_TYPE_SHELL_ERROR gperl_shell_error_get_type ()
GType gperl_shell_error_get_type (void) G_GNUC_CONST; GType gperl_shell_error_get_type (void) G_GNUC_CONST;
#define GPERL_TYPE_SPAWN_ERROR gperl_spawn_error_get_type () #define GPERL_TYPE_SPAWN_ERROR gperl_spawn_error_get_type ()
GType gperl_spawn_error_get_type (void) G_GNUC_CONST; GType gperl_spawn_error_get_type (void) G_GNUC_CONST;
#define GPERL_TYPE_THREAD_ERROR gperl_thread_error_get_type () #define GPERL_TYPE_THREAD_ERROR gperl_thread_error_get_type ()
GType gperl_thread_error_get_type (void) G_GNUC_CONST; GType gperl_thread_error_get_type (void) G_GNUC_CONST;
#if GLIB_CHECK_VERSION (2, 24, 0)
#define GPERL_TYPE_VARIANT_PARSE_ERROR gperl_variant_parse_error_get_type (
)
GType gperl_variant_parse_error_get_type (void);
#endif
G_END_DECLS G_END_DECLS
#endif /* __GPERL_GTYPES_H__ */ #endif /* __GPERL_GTYPES_H__ */
 End of changes. 1 change blocks. 
0 lines changed or deleted 6 lines changed or added


 gperl.h   gperl.h 
skipping to change at line 40 skipping to change at line 40
/* perl and glib disagree on a few macros... let the wookie win. */ /* perl and glib disagree on a few macros... let the wookie win. */
# undef pipe # undef pipe
# undef malloc # undef malloc
# undef realloc # undef realloc
# undef free # undef free
#endif #endif
#include <glib-object.h> #include <glib-object.h>
/* /*
* filenames * --- filenames ---------------------------------------------------------- ----
*/ */
typedef gchar* GPerlFilename;
typedef const gchar* GPerlFilename_const;
typedef gchar* GPerlFilename_own;
typedef GPerlFilename GPerlFilename_ornull;
gchar *gperl_filename_from_sv (SV *sv); gchar *gperl_filename_from_sv (SV *sv);
SV *gperl_sv_from_filename (const gchar *filename); SV *gperl_sv_from_filename (const gchar *filename);
/* /*
* enums and flags * --- enums and flags ---------------------------------------------------- ----
*/ */
gboolean gperl_try_convert_enum (GType type, SV * sv, gint * val); gboolean gperl_try_convert_enum (GType type, SV * sv, gint * val);
gint gperl_convert_enum (GType type, SV * val); gint gperl_convert_enum (GType type, SV * val);
SV * gperl_convert_back_enum_pass_unknown (GType type, gint val); SV * gperl_convert_back_enum_pass_unknown (GType type, gint val);
SV * gperl_convert_back_enum (GType type, gint val); SV * gperl_convert_back_enum (GType type, gint val);
gboolean gperl_try_convert_flag (GType type, const char * val_p, gint * val ); gboolean gperl_try_convert_flag (GType type, const char * val_p, gint * val );
gint gperl_convert_flag_one (GType type, const char * val_p); gint gperl_convert_flag_one (GType type, const char * val_p);
gint gperl_convert_flags (GType type, SV * val); gint gperl_convert_flags (GType type, SV * val);
SV * gperl_convert_back_flags (GType type, gint val); SV * gperl_convert_back_flags (GType type, gint val);
/* register a fundamental type (enums, flags...) */ /*
* --- fundamental types --------------------------------------------------
----
*/
typedef struct _GPerlValueWrapperClass GPerlValueWrapperClass; typedef struct _GPerlValueWrapperClass GPerlValueWrapperClass;
typedef SV* (*GPerlValueWrapFunc) (const GValue * value); typedef SV* (*GPerlValueWrapFunc) (const GValue * value);
typedef void (*GPerlValueUnwrapFunc) (GValue * value, typedef void (*GPerlValueUnwrapFunc) (GValue * value,
SV * sv); SV * sv);
struct _GPerlValueWrapperClass { struct _GPerlValueWrapperClass {
GPerlValueWrapFunc wrap; GPerlValueWrapFunc wrap;
GPerlValueUnwrapFunc unwrap; GPerlValueUnwrapFunc unwrap;
}; };
void gperl_register_fundamental (GType gtype, const char * package); void gperl_register_fundamental (GType gtype, const char * package);
void gperl_register_fundamental_alias (GType gtype, const char * package); void gperl_register_fundamental_alias (GType gtype, const char * package);
void gperl_register_fundamental_full (GType gtype, const char * package, GP erlValueWrapperClass * wrapper_class); void gperl_register_fundamental_full (GType gtype, const char * package, GP erlValueWrapperClass * wrapper_class);
GType gperl_fundamental_type_from_package (const char * package); GType gperl_fundamental_type_from_package (const char * package);
const char * gperl_fundamental_package_from_type (GType gtype); const char * gperl_fundamental_package_from_type (GType gtype);
GPerlValueWrapperClass * gperl_fundamental_wrapper_class_from_type (GType g type); GPerlValueWrapperClass * gperl_fundamental_wrapper_class_from_type (GType g type);
/* /*
* GErrors as exception objects * --- GErrors as exception objects --------------------------------------- ----
*/ */
/* it is rare that you should ever want or need these two functions. */ /* it is rare that you should ever want or need these two functions. */
SV * gperl_sv_from_gerror (GError * error); SV * gperl_sv_from_gerror (GError * error);
void gperl_gerror_from_sv (SV * sv, GError ** error); void gperl_gerror_from_sv (SV * sv, GError ** error);
void gperl_register_error_domain (GQuark domain, void gperl_register_error_domain (GQuark domain,
GType error_enum, GType error_enum,
const char * package); const char * package);
void gperl_croak_gerror (const char * ignored, GError * err); void gperl_croak_gerror (const char * ignored, GError * err);
/* /*
* inheritance management * --- inheritance management --------------------------------------------- ----
*/ */
/* push @{$parent_package}::ISA, $child_package */ /* push @{$parent_package}::ISA, $child_package */
void gperl_set_isa (const char * child_package, const char * parent_package ); void gperl_set_isa (const char * child_package, const char * parent_package );
/* unshift @{$parent_package}::ISA, $child_package */ /* unshift @{$parent_package}::ISA, $child_package */
void gperl_prepend_isa (const char * child_package, const char * parent_pac kage); void gperl_prepend_isa (const char * child_package, const char * parent_pac kage);
/* these work regardless of what the actual type is (GBoxed, GObject, GEnum , /* these work regardless of what the actual type is (GBoxed, GObject, GEnum ,
* or GFlags). in general it's safer to use the most specific one, but thi s * or GFlags). in general it's safer to use the most specific one, but thi s
* is handy when you don't care. */ * is handy when you don't care. */
GType gperl_type_from_package (const char * package); GType gperl_type_from_package (const char * package);
const char * gperl_package_from_type (GType type); const char * gperl_package_from_type (GType type);
/* /*
* we need a GBoxed wrapper for a generic SV, so we can store SVs * --- gchar converters ---------------------------------------------------
* in GObjects reliably. ----
*/ */
#define GPERL_TYPE_SV (gperl_sv_get_type ()) typedef gchar gchar_length; /* length in bytes */
GType gperl_sv_get_type (void) G_GNUC_CONST; typedef gchar gchar_utf8_length; /* length in characters */
SV * gperl_sv_copy (SV * sv); typedef gchar gchar_own;
void gperl_sv_free (SV * sv); typedef gchar gchar_ornull;
typedef gchar gchar_own_ornull;
/* /* clean function wrappers for treating gchar* as UTF8 strings, in the
* clean function wrappers for treating gchar* as UTF8 strings, in the
* same idiom as the rest of the cast macros. these are wrapped up * same idiom as the rest of the cast macros. these are wrapped up
* as functions because comma expressions in macros get kinda tricky. * as functions because comma expressions in macros get kinda tricky. */
*/
/*const*/ gchar * SvGChar (SV * sv); /*const*/ gchar * SvGChar (SV * sv);
SV * newSVGChar (const gchar * str); SV * newSVGChar (const gchar * str);
/* /*
* 64 bit integer converters * --- 64 bit integer converters ------------------------------------------ ----
*/ */
gint64 SvGInt64 (SV *sv); gint64 SvGInt64 (SV *sv);
SV * newSVGInt64 (gint64 value); SV * newSVGInt64 (gint64 value);
guint64 SvGUInt64 (SV *sv); guint64 SvGUInt64 (SV *sv);
SV * newSVGUInt64 (guint64 value); SV * newSVGUInt64 (guint64 value);
/* /*
* GValues * --- GValue ------------------------------------------------------------- ----
*/ */
gboolean gperl_value_from_sv (GValue * value, SV * sv); gboolean gperl_value_from_sv (GValue * value, SV * sv);
SV * gperl_sv_from_value (const GValue * value); SV * gperl_sv_from_value (const GValue * value);
/* /*
* GBoxed * --- GBoxed ------------------------------------------------------------- ----
*/ */
typedef struct _GPerlBoxedWrapperClass GPerlBoxedWrapperClass; typedef struct _GPerlBoxedWrapperClass GPerlBoxedWrapperClass;
typedef SV* (*GPerlBoxedWrapFunc) (GType gtype, typedef SV* (*GPerlBoxedWrapFunc) (GType gtype,
const char * package, const char * package,
gpointer boxed, gpointer boxed,
gboolean own); gboolean own);
typedef gpointer (*GPerlBoxedUnwrapFunc) (GType gtype, typedef gpointer (*GPerlBoxedUnwrapFunc) (GType gtype,
const char * package, const char * package,
SV * sv); SV * sv);
typedef void (*GPerlBoxedDestroyFunc) (SV * sv); typedef void (*GPerlBoxedDestroyFunc) (SV * sv);
skipping to change at line 174 skipping to change at line 177
void gperl_register_boxed_synonym (GType registered_gtype, GType synonym_gt ype); void gperl_register_boxed_synonym (GType registered_gtype, GType synonym_gt ype);
SV * gperl_new_boxed (gpointer boxed, GType gtype, gboolean own); SV * gperl_new_boxed (gpointer boxed, GType gtype, gboolean own);
SV * gperl_new_boxed_copy (gpointer boxed, GType gtype); SV * gperl_new_boxed_copy (gpointer boxed, GType gtype);
gpointer gperl_get_boxed_check (SV * sv, GType gtype); gpointer gperl_get_boxed_check (SV * sv, GType gtype);
GType gperl_boxed_type_from_package (const char * package); GType gperl_boxed_type_from_package (const char * package);
const char * gperl_boxed_package_from_type (GType type); const char * gperl_boxed_package_from_type (GType type);
/* /*
* GObject * we need a GBoxed wrapper for a generic SV, so we can store SVs
* in GObjects reliably.
*/
#define GPERL_TYPE_SV (gperl_sv_get_type ())
GType gperl_sv_get_type (void) G_GNUC_CONST;
SV * gperl_sv_copy (SV * sv);
void gperl_sv_free (SV * sv);
/*
* --- GObject ------------------------------------------------------------
----
*/ */
typedef GObject GObject_ornull;
typedef GObject GObject_noinc;
#define newSVGObject(obj) (gperl_new_object ((obj), FALSE))
#define newSVGObject_noinc(obj) (gperl_new_object ((obj), TRUE))
#define SvGObject(sv) (gperl_get_object_check (sv, G_TYPE_OBJECT))
#define SvGObject_ornull(sv) (gperl_sv_is_defined (sv) ? SvGObject (sv) :
NULL)
void gperl_register_object (GType gtype, const char * package); void gperl_register_object (GType gtype, const char * package);
void gperl_register_object_alias (GType gtype, const char * package); void gperl_register_object_alias (GType gtype, const char * package);
typedef void (*GPerlObjectSinkFunc) (GObject *); typedef void (*GPerlObjectSinkFunc) (GObject *);
void gperl_register_sink_func (GType gtype, void gperl_register_sink_func (GType gtype,
GPerlObjectSinkFunc func); GPerlObjectSinkFunc func);
void gperl_object_set_no_warn_unreg_subclass (GType gtype, gboolean nowarn) ; void gperl_object_set_no_warn_unreg_subclass (GType gtype, gboolean nowarn) ;
const char * gperl_object_package_from_type (GType gtype); const char * gperl_object_package_from_type (GType gtype);
skipping to change at line 200 skipping to change at line 219
GObject * gperl_get_object (SV * sv); GObject * gperl_get_object (SV * sv);
GObject * gperl_get_object_check (SV * sv, GType gtype); GObject * gperl_get_object_check (SV * sv, GType gtype);
SV * gperl_object_check_type (SV * sv, GType gtype); SV * gperl_object_check_type (SV * sv, GType gtype);
void _gperl_attach_mg (SV * sv, void * ptr); void _gperl_attach_mg (SV * sv, void * ptr);
MAGIC * _gperl_find_mg (SV * sv); MAGIC * _gperl_find_mg (SV * sv);
void _gperl_remove_mg (SV * sv); void _gperl_remove_mg (SV * sv);
/* typedefs and macros for use with the typemap */
typedef gchar gchar_length; /* length in bytes */
typedef gchar gchar_utf8_length; /* length in characters */
typedef gchar gchar_own;
typedef gchar gchar_ornull;
typedef gchar gchar_own_ornull;
typedef char char_ornull;
typedef char char_own;
typedef char char_own_ornull;
typedef GObject GObject_ornull;
typedef GObject GObject_noinc;
typedef gchar *GPerlFilename;
typedef const gchar *GPerlFilename_const;
typedef gchar *GPerlFilename_own;
typedef GPerlFilename GPerlFilename_ornull;
typedef GParamSpec GParamSpec_ornull;
#define newSVGObject(obj) (gperl_new_object ((obj), FALSE))
#define newSVGObject_noinc(obj) (gperl_new_object ((obj), TRUE))
#define SvGObject(sv) (gperl_get_object_check (sv, G_TYPE_OBJECT))
#define SvGObject_ornull(sv) (gperl_sv_is_defined (sv) ? SvGObject (sv) :
NULL)
#define newSVGParamSpec_ornull(sv) newSVGParamSpec(sv)
/* /*
* GSignal.xs * --- GSignal ------------------------------------------------------------ ----
*/ */
SV * newSVGSignalFlags (GSignalFlags flags); SV * newSVGSignalFlags (GSignalFlags flags);
GSignalFlags SvGSignalFlags (SV * sv); GSignalFlags SvGSignalFlags (SV * sv);
SV * newSVGSignalInvocationHint (GSignalInvocationHint * ihint); SV * newSVGSignalInvocationHint (GSignalInvocationHint * ihint);
SV * newSVGSignalQuery (GSignalQuery * query); SV * newSVGSignalQuery (GSignalQuery * query);
void gperl_signal_set_marshaller_for (GType instance_type, void gperl_signal_set_marshaller_for (GType instance_type,
char * detailed_signal, char * detailed_signal,
GClosureMarshal marshaller); GClosureMarshal marshaller);
gulong gperl_signal_connect (SV * instance, gulong gperl_signal_connect (SV * instance,
char * detailed_signal, char * detailed_signal,
SV * callback, SV * callback,
SV * data, SV * data,
GConnectFlags flags); GConnectFlags flags);
/* /*
* GClosure * --- GClosure ----------------------------------------------------------- ----
*/ */
typedef struct _GPerlClosure GPerlClosure; typedef struct _GPerlClosure GPerlClosure;
struct _GPerlClosure { struct _GPerlClosure {
GClosure closure; GClosure closure;
SV * callback; SV * callback;
SV * data; /* callback data */ SV * data; /* callback data */
gboolean swap; /* TRUE if target and data are to be swapped */ gboolean swap; /* TRUE if target and data are to be swapped */
int id; int id;
}; };
skipping to change at line 266 skipping to change at line 262
GClosure * gperl_closure_new (SV * callback, GClosure * gperl_closure_new (SV * callback,
SV * data, SV * data,
gboolean swap); gboolean swap);
/* very scary, use only if you really know what you are doing */ /* very scary, use only if you really know what you are doing */
GClosure * gperl_closure_new_with_marshaller (SV * callback, GClosure * gperl_closure_new_with_marshaller (SV * callback,
SV * data, SV * data,
gboolean swap, gboolean swap,
GClosureMarshal marshaller) ; GClosureMarshal marshaller) ;
/* /*
* GPerlCallback * --- GPerlCallback ------------------------------------------------------ ----
*/ */
typedef struct _GPerlCallback GPerlCallback; typedef struct _GPerlCallback GPerlCallback;
struct _GPerlCallback { struct _GPerlCallback {
gint n_params; gint n_params;
GType * param_types; GType * param_types;
GType return_type; GType return_type;
SV * func; SV * func;
SV * data; SV * data;
void * priv; void * priv;
}; };
skipping to change at line 292 skipping to change at line 287
GType param_types[], GType param_types[],
GType return_type); GType return_type);
void gperl_callback_destroy (GPerlCallback * callback); void gperl_callback_destroy (GPerlCallback * callback);
void gperl_callback_invoke (GPerlCallback * callback, void gperl_callback_invoke (GPerlCallback * callback,
GValue * return_value, GValue * return_value,
...); ...);
/* /*
* exception handling * --- exception handling ------------------------------------------------- ----
*/ */
int gperl_install_exception_handler (GClosure * closure); int gperl_install_exception_handler (GClosure * closure);
void gperl_remove_exception_handler (guint tag); void gperl_remove_exception_handler (guint tag);
void gperl_run_exception_handlers (void); void gperl_run_exception_handlers (void);
/* /*
* to be used by extensions... * --- log handling for extensions ---------------------------------------- ----
*/ */
gint gperl_handle_logs_for (const gchar * log_domain); gint gperl_handle_logs_for (const gchar * log_domain);
/* /*
* gparamspec.h / GParamSpec.xs * --- GParamSpec --------------------------------------------------------- ----
*/ */
typedef GParamSpec GParamSpec_ornull;
SV * newSVGParamSpec (GParamSpec * pspec); SV * newSVGParamSpec (GParamSpec * pspec);
GParamSpec * SvGParamSpec (SV * sv); GParamSpec * SvGParamSpec (SV * sv);
#define newSVGParamSpec_ornull(sv) newSVGParamSpec(sv)
SV * newSVGParamFlags (GParamFlags flags); SV * newSVGParamFlags (GParamFlags flags);
GParamFlags SvGParamFlags (SV * sv); GParamFlags SvGParamFlags (SV * sv);
void gperl_register_param_spec (GType gtype, const char * package); void gperl_register_param_spec (GType gtype, const char * package);
const char * gperl_param_spec_package_from_type (GType gtype); const char * gperl_param_spec_package_from_type (GType gtype);
GType gperl_param_spec_type_from_package (const char * package); GType gperl_param_spec_type_from_package (const char * package);
/* /*
* gkeyfile.h / GKeyFile.xs * --- GKeyFile ----------------------------------------------------------- ----
*/ */
#if GLIB_CHECK_VERSION (2, 6, 0) #if GLIB_CHECK_VERSION (2, 6, 0)
SV * newSVGKeyFile (GKeyFile * key_file); SV * newSVGKeyFile (GKeyFile * key_file);
GKeyFile * SvGKeyFile (SV * sv); GKeyFile * SvGKeyFile (SV * sv);
SV * newSVGKeyFileFlags (GKeyFileFlags flags); SV * newSVGKeyFileFlags (GKeyFileFlags flags);
GKeyFileFlags SvGKeyFileFlags (SV * sv); GKeyFileFlags SvGKeyFileFlags (SV * sv);
#endif /* GLIB_CHECK_VERSION (2, 6, 0) */ #endif /* GLIB_CHECK_VERSION (2, 6, 0) */
/* /*
* gbookmarkfile.h / GBookmarkFile.xs * --- GBookmarkFile ------------------------------------------------------ ----
*/ */
#if GLIB_CHECK_VERSION (2, 12, 0) #if GLIB_CHECK_VERSION (2, 12, 0)
SV * newSVGBookmarkFile (GBookmarkFile * bookmark_file); SV * newSVGBookmarkFile (GBookmarkFile * bookmark_file);
GBookmarkFile * SvGBookmarkFile (SV * sv); GBookmarkFile * SvGBookmarkFile (SV * sv);
#endif /* GLIB_CHECK_VERSION (2, 12, 0) */ #endif /* GLIB_CHECK_VERSION (2, 12, 0) */
#if GLIB_CHECK_VERSION (2, 6, 0)
/* /*
* GOption.xs * --- GOption ------------------------------------------------------------ ----
*/ */
#if GLIB_CHECK_VERSION (2, 6, 0)
typedef GOptionContext GOptionContext_own; typedef GOptionContext GOptionContext_own;
#define GPERL_TYPE_OPTION_CONTEXT (gperl_option_context_get_type ()) #define GPERL_TYPE_OPTION_CONTEXT (gperl_option_context_get_type ())
GType gperl_option_context_get_type (void); GType gperl_option_context_get_type (void);
#define SvGOptionContext(sv) (gperl_get_boxed_check ((sv), GPERL_ TYPE_OPTION_CONTEXT)) #define SvGOptionContext(sv) (gperl_get_boxed_check ((sv), GPERL_ TYPE_OPTION_CONTEXT))
#define newSVGOptionContext(val) (gperl_new_boxed ((gpointer) (val), GPERL_TYPE_OPTION_CONTEXT, FALSE)) #define newSVGOptionContext(val) (gperl_new_boxed ((gpointer) (val), GPERL_TYPE_OPTION_CONTEXT, FALSE))
#define newSVGOptionContext_own(val) (gperl_new_boxed ((gpointer) (val), GPERL_TYPE_OPTION_CONTEXT, TRUE)) #define newSVGOptionContext_own(val) (gperl_new_boxed ((gpointer) (val), GPERL_TYPE_OPTION_CONTEXT, TRUE))
skipping to change at line 361 skipping to change at line 357
#define GPERL_TYPE_OPTION_GROUP (gperl_option_group_get_type ()) #define GPERL_TYPE_OPTION_GROUP (gperl_option_group_get_type ())
GType gperl_option_group_get_type (void); GType gperl_option_group_get_type (void);
#define SvGOptionGroup(sv) (gperl_get_boxed_check ((sv), GPERL_ TYPE_OPTION_GROUP)) #define SvGOptionGroup(sv) (gperl_get_boxed_check ((sv), GPERL_ TYPE_OPTION_GROUP))
#define newSVGOptionGroup(val) (gperl_new_boxed ((gpointer) (val), GPERL_TYPE_OPTION_GROUP, FALSE)) #define newSVGOptionGroup(val) (gperl_new_boxed ((gpointer) (val), GPERL_TYPE_OPTION_GROUP, FALSE))
#define newSVGOptionGroup_own(val) (gperl_new_boxed ((gpointer) (val), GPERL_TYPE_OPTION_GROUP, TRUE)) #define newSVGOptionGroup_own(val) (gperl_new_boxed ((gpointer) (val), GPERL_TYPE_OPTION_GROUP, TRUE))
#endif /* 2.6.0 */ #endif /* 2.6.0 */
/* /*
* gutils.h / GUtils.xs * --- gutils.h / GUtils.xs ----------------------------------------------- ----
*/ */
#if GLIB_CHECK_VERSION (2, 14, 0) #if GLIB_CHECK_VERSION (2, 14, 0)
GUserDirectory SvGUserDirectory (SV *sv); GUserDirectory SvGUserDirectory (SV *sv);
SV * newSVGUserDirectory (GUserDirectory dir); SV * newSVGUserDirectory (GUserDirectory dir);
#endif #endif
/* /*
* miscellaneous * -- GVariant ------------------------------------------------------------
----
*/
#if GLIB_CHECK_VERSION (2, 24, 0)
typedef GVariant GVariant_noinc;
SV * newSVGVariant (GVariant * variant);
SV * newSVGVariant_noinc (GVariant * variant);
GVariant * SvGVariant (SV * sv);
typedef GVariantType GVariantType_own;
SV * newSVGVariantType (const GVariantType * type);
SV * newSVGVariantType_own (const GVariantType * type);
const GVariantType * SvGVariantType (SV * sv);
#endif /* 2.24.0 */
/*
* --- miscellaneous ------------------------------------------------------
----
*/ */
/* for use with the typemap */
typedef char char_ornull;
typedef char char_own;
typedef char char_own_ornull;
typedef char char_byte;
typedef char char_byte_ornull;
/* never use this function directly. use GPERL_CALL_BOOT. */ /* never use this function directly. use GPERL_CALL_BOOT. */
void _gperl_call_XS (pTHX_ void (*subaddr) (pTHX_ CV *), CV * cv, SV ** mar k); void _gperl_call_XS (pTHX_ void (*subaddr) (pTHX_ CV *), CV * cv, SV ** mar k);
/* /*
* call the boot code of a module by symbol rather than by name. * call the boot code of a module by symbol rather than by name.
* *
* in a perl extension which uses several xs files but only one pm, you * in a perl extension which uses several xs files but only one pm, you
* need to bootstrap the other xs files in order to get their functions * need to bootstrap the other xs files in order to get their functions
* exported to perl. if the file has MODULE = Foo::Bar, the boot symbol * exported to perl. if the file has MODULE = Foo::Bar, the boot symbol
* would be boot_Foo__Bar. * would be boot_Foo__Bar.
 End of changes. 35 change blocks. 
60 lines changed or deleted 85 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/