MODULE = SWISH::3 PACKAGE = SWISH::3::Analyzer
PROTOTYPES: enable
swish_Analyzer *
new(CLASS, config)
char* CLASS;
swish_Config* config;
CODE:
RETVAL = swish_analyzer_init(config);
RETVAL->ref_cnt++;
RETVAL->stash = sp_Stash_new();
OUTPUT:
RETVAL
# accessors/mutators
void
_set_or_get(self, ...)
swish_Analyzer* self;
ALIAS:
set_regex = 1
get_regex = 2
PREINIT:
SV* stash;
SV* RETVAL;
PPCODE:
{
//warn("number of items %d for ix %d", items, ix);
START_SET_OR_GET_SWITCH
// set_regex
case 1: sp_SV_is_qr(ST(1));
self->regex = ST(1);
break;
// get_regex
case 2: RETVAL = self->regex; //SvREFCNT_inc( self->regex );
break;
END_SET_OR_GET_SWITCH
}
boolean
get_tokenize(self)
swish_Analyzer* self;
CODE:
RETVAL = self->tokenize;
OUTPUT:
RETVAL
void
set_tokenize(self, arg)
swish_Analyzer* self;
SV* arg;
CODE:
if (SvIOK(arg)) {
self->tokenize = SvIV(arg);
}
else {
croak("argument to set_tokenize() should be an integer");
}
void
DESTROY(self)
swish_Analyzer* self
CODE:
self->ref_cnt--;
if (SWISH_DEBUG) {
warn("DESTROY %s [0x%lx] [ref_cnt = %d]",
SvPV(ST(0), PL_na), (long)self, self->ref_cnt);
}
if (self->ref_cnt < 1) {
sp_Stash_destroy( self->stash );
self->stash = NULL;
//warn("Analyzer regex refcnt = %d", SvREFCNT((SV*)self->regex));
SvREFCNT_dec( (SV*)self->regex );
self->regex = NULL;
swish_analyzer_free(self);
}