class PerlTokenizer : public Tokenizer, public PerlWrapper { public: PerlTokenizer(Reader* reader) : Tokenizer(reader), PerlWrapper() {} void close() { SV* obj = SvRV(obj_ref); Tokenizer::close(); m.call(obj, "close"); m.finish(); } bool next(Token* token) { SV* obj = SvRV(obj_ref); SV* perl_token = PtrToSv("Lucene::Analysis::Token", (void*)token, sv_newmortal()); m.pushArgument(perl_token); m.call(obj, "next"); SV* ret = m.shiftReturn(); m.finish(); if (SvTRUE(ret)) return true; return false; } };