PkgConfig-LibPkgConf
view release on metacpan or search on metacpan
LibPkgConf.xs view on Meta::CPAN
/*
* TODO: attribute for max depth
*/
eflag = type > 1
? pkgconf_pkg_cflags(&client->client, self, &unfiltered_list, client->maxdepth)
: pkgconf_pkg_libs(&client->client, self, &unfiltered_list, client->maxdepth);
pkgconf_client_set_flags(&client->client, old_flags);
/*
* TODO: throw an exception
*/
if(eflag != PKGCONF_PKG_ERRF_OK)
XSRETURN_EMPTY;
pkgconf_fragment_filter(&client->client, &filtered_list, &unfiltered_list, directory_filter, NULL);
PKGCONF_FOREACH_LIST_ENTRY(filtered_list.head, node)
{
h = newHV();
frag = node->data;
if(frag->type)
hv_store(h, "type", 4, newSVpvf("%c", frag->type), 0);
else
hv_store(h, "type", 4, newSVsv(&PL_sv_undef), 0);
if(frag->data)
hv_store(h, "data", 4, newSVpv(frag->data, strlen(frag->data)), 0);
else
hv_store(h, "data", 4, newSVsv(&PL_sv_undef), 0);
ST(count++) = newRV_noinc((SV*) h);
}
pkgconf_fragment_free(&filtered_list);
pkgconf_fragment_free(&unfiltered_list);
XSRETURN(count);
void
_get_variable(self, key)
pkgconf_pkg_t *self
const char *key
INIT:
pkgconf_node_t *node;
pkgconf_tuple_t *tup;
CODE:
PKGCONF_FOREACH_LIST_ENTRY(self->vars.head, node)
{
tup = node->data;
if(!strcmp(tup->key, key))
{
XSRETURN_PV(tup->value);
}
}
XSRETURN_EMPTY;
MODULE = PkgConfig::LibPkgConf PACKAGE = PkgConfig::LibPkgConf::Util
void
argv_split(src)
const char *src
INIT:
int argc, ret, i;
char **argv;
PPCODE:
ret = pkgconf_argv_split(src, &argc, &argv);
if(ret == 0)
{
for(i=0; i<argc; i++)
{
XPUSHs(sv_2mortal(newSVpv(argv[i],0)));
}
pkgconf_argv_free(argv);
}
else
{
croak("error in argv_split");
}
int
compare_version(a,b)
const char *a
const char *b
INIT:
int ret;
CODE:
ret = pkgconf_compare_version(a,b);
if(ret < 0)
RETVAL = -1;
else if(ret > 0)
RETVAL = 1;
else
RETVAL = 0;
OUTPUT:
RETVAL
char *
path_sep()
CODE:
RETVAL = PKG_CONFIG_PATH_SEP_S;
OUTPUT:
RETVAL
#define STRINGIZE(x) #x
#define STRINGIZE_VALUE_OF(x) STRINGIZE(x)
const char *
version()
CODE:
RETVAL = STRINGIZE_VALUE_OF(MY_PKGCONF_VERSION);
OUTPUT:
RETVAL
SV *
path_relocate(in)
const char *in;
INIT:
char out[PKGCONF_BUFSIZE];
bool ok;
CODE:
( run in 0.708 second using v1.01-cache-2.11-cpan-5511b514fd6 )