pidgin/pidgin
Clone
Summary
Browse
Changes
Graph
Create a glibcompat.h to define G_GNUC_(BEGIN,END)_IGNORE_DEPRECATIONS which was added in 2.32.0 but we only require 2.16.0
release-2.x.y
2019-11-11, Gary Kramlich
dc5e8cca7434
Create a glibcompat.h to define G_GNUC_(BEGIN,END)_IGNORE_DEPRECATIONS which was added in 2.32.0 but we only require 2.16.0
#include "module.h"
MODULE
=
Purple
::
PluginPref
PACKAGE
=
Purple
::
PluginPref
::
Frame
PREFIX
=
purple_plugin_pref_frame_
PROTOTYPES
:
ENABLE
BOOT
:
{
HV
*
string_format_stash
=
gv_stashpv
(
"Purple::String::Format::Type"
,
1
);
HV
*
plugin_pref_stash
=
gv_stashpv
(
"Purple::PluginPref::Type"
,
1
);
static
const
constiv
*
civ
,
string_format_const_iv
[]
=
{
#define const_iv(name) {#name, (IV)PURPLE_STRING_FORMAT_TYPE_##name}
const_iv
(
NONE
),
const_iv
(
MULTILINE
),
const_iv
(
HTML
),
};
static
const
constiv
plugin_pref_const_iv
[]
=
{
#undef const_iv
#define const_iv(name) {#name, (IV)PURPLE_PLUGIN_PREF_##name}
const_iv
(
NONE
),
const_iv
(
CHOICE
),
const_iv
(
INFO
),
const_iv
(
STRING_FORMAT
),
};
for
(
civ
=
string_format_const_iv
+
sizeof
(
string_format_const_iv
)
/
sizeof
(
string_format_const_iv
[
0
]);
civ
--
>
string_format_const_iv
;
)
newCONSTSUB
(
string_format_stash
,
(
char
*
)
civ
->
name
,
newSViv
(
civ
->
iv
));
for
(
civ
=
plugin_pref_const_iv
+
sizeof
(
plugin_pref_const_iv
)
/
sizeof
(
plugin_pref_const_iv
[
0
]);
civ
--
>
plugin_pref_const_iv
;
)
newCONSTSUB
(
plugin_pref_stash
,
(
char
*
)
civ
->
name
,
newSViv
(
civ
->
iv
));
}
void
purple_plugin_pref_frame_add
(
frame
,
pref
)
Purple
::
PluginPref
::
Frame
frame
Purple
::
PluginPref
pref
void
purple_plugin_pref_frame_destroy
(
frame
)
Purple
::
PluginPref
::
Frame
frame
void
purple_plugin_pref_frame_get_prefs
(
frame
)
Purple
::
PluginPref
::
Frame
frame
PREINIT
:
GList
*
l
;
PPCODE
:
for
(
l
=
purple_plugin_pref_frame_get_prefs
(
frame
);
l
!=
NULL
;
l
=
l
->
next
)
{
XPUSHs
(
sv_2mortal
(
purple_perl_bless_object
(
l
->
data
,
"Purple::PluginPref"
)));
}
Purple
::
PluginPref
::
Frame
purple_plugin_pref_frame_new
(
class
)
C_ARGS
:
/*
void
*/
MODULE
=
Purple
::
PluginPref
PACKAGE
=
Purple
::
PluginPref
PREFIX
=
purple_plugin_pref_
PROTOTYPES
:
ENABLE
void
purple_plugin_pref_add_choice
(
pref
,
label
,
choice
)
Purple
::
PluginPref
pref
const
char
*
label
# Do the appropriate conversion based on the perl type specified.
# Currently only Strings and Ints will work.
gpointer
choice
=
(
SvPOKp
(
$
arg
)
?
SvPVutf8_nolen
(
$
arg
)
:
(
SvIOKp
(
$
arg
)
?
GINT_TO_POINTER
(
SvIV
(
$
arg
))
:
NULL
));
void
purple_plugin_pref_destroy
(
pref
)
Purple
::
PluginPref
pref
void
purple_plugin_pref_get_bounds
(
pref
,
OUTLIST
int
min
,
OUTLIST
int
max
)
Purple
::
PluginPref
pref
# According to the perlxs manual page we shouldn't need to specify a
# prototype here because "[p]arameters preceded by OUTLIST keyword do
# not appear in the usage signature of the generated Perl function."
# however that appears to only work for the usage error message and
# not for the call to newXSproto. Since I can't find any documentation
# for newXSproto at the moment I have no idea if that matters so
# override the prototype here.
PROTOTYPE
:
$
void
purple_plugin_pref_get_choices
(
pref
)
Purple
::
PluginPref
pref
PREINIT
:
GList
*
l
;
PPCODE
:
for
(
l
=
purple_plugin_pref_get_choices
(
pref
);
l
!=
NULL
;
l
=
l
->
next
)
{
XPUSHs
(
sv_2mortal
(
purple_perl_bless_object
(
l
->
data
,
"Purple::ListItem"
)));
}
const
char
*
purple_plugin_pref_get_label
(
pref
)
Purple
::
PluginPref
pref
gboolean
purple_plugin_pref_get_masked
(
pref
)
Purple
::
PluginPref
pref
Purple
::
String
::
Format
::
Type
purple_plugin_pref_get_format_type
(
pref
)
Purple
::
PluginPref
pref
unsigned
int
purple_plugin_pref_get_max_length
(
pref
)
Purple
::
PluginPref
pref
const
char
*
purple_plugin_pref_get_name
(
pref
)
Purple
::
PluginPref
pref
Purple
::
PluginPrefType
purple_plugin_pref_get_type
(
pref
)
Purple
::
PluginPref
pref
Purple
::
PluginPref
purple_plugin_pref_new
(
class
)
C_ARGS
:
/*
void
*/
Purple
::
PluginPref
purple_plugin_pref_new_with_label
(
class
,
label
)
const
char
*
label
C_ARGS
:
label
Purple
::
PluginPref
purple_plugin_pref_new_with_name
(
class
,
name
)
const
char
*
name
C_ARGS
:
name
Purple
::
PluginPref
purple_plugin_pref_new_with_name_and_label
(
class
,
name
,
label
)
const
char
*
name
const
char
*
label
C_ARGS
:
name
,
label
void
purple_plugin_pref_set_bounds
(
pref
,
min
,
max
)
Purple
::
PluginPref
pref
int
min
int
max
void
purple_plugin_pref_set_label
(
pref
,
label
)
Purple
::
PluginPref
pref
const
char
*
label
void
purple_plugin_pref_set_masked
(
pref
,
mask
)
Purple
::
PluginPref
pref
gboolean
mask
void
purple_plugin_pref_set_format_type
(
pref
,
format
)
Purple
::
PluginPref
pref
Purple
::
String
::
Format
::
Type
format
void
purple_plugin_pref_set_max_length
(
pref
,
max_length
)
Purple
::
PluginPref
pref
unsigned
int
max_length
void
purple_plugin_pref_set_name
(
pref
,
name
)
Purple
::
PluginPref
pref
const
char
*
name
void
purple_plugin_pref_set_type
(
pref
,
type
)
Purple
::
PluginPref
pref
Purple
::
PluginPrefType
type
PREINIT
:
PurplePluginPrefType
gpp_type
;
CODE
:
gpp_type
=
PURPLE_PLUGIN_PREF_NONE
;
if
(
type
==
1
)
{
gpp_type
=
PURPLE_PLUGIN_PREF_CHOICE
;
}
else
if
(
type
==
2
)
{
gpp_type
=
PURPLE_PLUGIN_PREF_INFO
;
}
else
if
(
type
==
3
)
{
gpp_type
=
PURPLE_PLUGIN_PREF_STRING_FORMAT
;
}
purple_plugin_pref_set_type
(
pref
,
gpp_type
);