| 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 | |
|