#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "ppport.h"
#include "const-c.inc"
#define sv_defined(sv) (sv && (SvIOK(sv) || SvNOK(sv) || SvPOK(sv) || SvROK(sv)))
#ifndef SvRXOK
#define SvRXOK(sv) _is_regexp(aTHX_ sv)
STATIC int
_is_regexp (pTHX_ SV* sv) {
SV* tmpsv;
if (SvMAGICAL(sv))
{
mg_get(sv);
}
if (SvROK(sv)
&& (tmpsv = (SV*) SvRV(sv))
&& SvTYPE(tmpsv) == SVt_PVMG
&& (mg_find(tmpsv, PERL_MAGIC_qr)))
{
return TRUE;
}
return FALSE;
}
#endif
MODULE = Regexp::Util PACKAGE = Regexp::Util
INCLUDE: const-xs.inc
bool
is_regexp (ref)
SV *ref
CODE:
RETVAL = SvRXOK(ref);
OUTPUT:
RETVAL
bool
regexp_seen_evals (ref)
SV *ref
CODE:
REGEXP *re;
re = SvRX(ref);
RETVAL = RX_EXTFLAGS(re) & RXf_EVAL_SEEN;
OUTPUT:
RETVAL
int
_regexp_engine_id (ref)
SV *ref
CODE:
REGEXP *re;
const regexp_engine *e;
re = SvRX(ref);
e = RX_ENGINE(re);
RETVAL = (int)e;
OUTPUT:
RETVAL