/* Analyzer wrapper for subclasses */ class PerlAnalyzer : public Analyzer, public PerlWrapper { public: TokenStream* tokenStream(const TCHAR* fieldName, Reader* reader) { TokenStream* var; int count; SV* perl_reader; SV* perl_field_name; SV* obj = SvRV(obj_ref); perl_field_name = WCharToSv((wchar_t*)fieldName, sv_newmortal()); perl_reader = PtrToSv("Lucene::Utils::Reader", (void*)reader, sv_newmortal()); m.pushArgument(perl_field_name); m.pushArgument(perl_reader); m.call(obj, "tokenStream"); SV* arg = m.shiftReturn(); m.finish(); var = SvToPtr(arg); if (!var) croak("tokenStream returned an invalid object"); MarkObjCppOwned(arg); // The calling method deletes the object return var; } };