Apporo

 view release on metacpan or  search on metacpan

xs/Apporo.xs  view on Meta::CPAN

#include <string>
#include <vector>
#include <iostream>
#include "apporo.h"
using namespace std;
using namespace apporo;

#ifdef __cplusplus
extern "C" {
#endif
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "ppport.h"
#ifdef __cplusplus
}



#endif

#define XS_STATE(type, x) \
    INT2PTR(type, SvROK(x) ? SvIV(SvRV(x)) : SvIV(x))

#define XS_STRUCT2OBJ(sv, class, obj) \
    if (obj == NULL) { \
        sv_setsv(sv, &PL_sv_undef); \
    } else { \
        sv_setref_pv(sv, class, (void *) obj); \
    }

MODULE = Apporo  PACKAGE = Apporo

Apporo*
Apporo::new(char* config_file_path)
CODE:
  std::string path = (string)config_file_path;
  Apporo *a = new Apporo(path);
  RETVAL = a;
OUTPUT:
  RETVAL

void
Apporo::DESTROY()

AV*
Apporo::retrieve(char* query)
CODE:
  AV *res = newAV();
  string q(query);
  vector <string> vec = THIS->retrieve(q);
  av_extend(res, vec.size() - 1);
  for (size_t i = 0; i < vec.size(); i++) {
    SV *tmp = newSVpv(vec[i].c_str(), 0);
    av_store(res, i, tmp);
  }
  RETVAL = res;
OUTPUT:
  RETVAL



( run in 1.245 second using v1.01-cache-2.11-cpan-ceb78f64989 )