Algorithm-ConstructDFA-XS
view release on metacpan or search on metacpan
ConstructDFA.xs view on Meta::CPAN
ENTER;
SAVETMPS;
PUSHMARK(SP);
for (auto i = s.begin(); i != s.end(); ++i) {
mXPUSHs(newSVuv(*i));
}
PUTBACK;
I32 count = call_sv(accept_sv, G_SCALAR);
SPAGAIN;
bool result = false;
if (count == 1) {
result = (bool)POPi;
} else {
warn("bad accept");
}
PUTBACK;
FREETMPS;
LEAVE;
return result;
}
class StatesBimap {
public:
std::map<vector<State>, StatesId> s2id;
std::vector<vector<State>> id2s;
ConstructDFA.xs view on Meta::CPAN
void
_internal_construct_dfa_xs(accepts_sv, args_sv)
SV* accepts_sv
SV* args_sv
PREINIT:
AV* args;
PPCODE:
args = (AV*)SvRV(args_sv);
PUTBACK;
auto dfa = build_dfa(accepts_sv, args);
SPAGAIN;
for (auto i = dfa.begin(); i != dfa.end(); ++i) {
mXPUSHs(newSVuv(i->first));
mXPUSHs(newRV_noinc((SV*)(i->second)));
}
( run in 0.335 second using v1.01-cache-2.11-cpan-4e96b696675 )