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 )