22 Feb 2008 13:20
Re: Branching for 1.1
Richard Boulton <richard <at> lemurconsulting.com>
2008-02-22 12:20:28 GMT
2008-02-22 12:20:28 GMT
Olly Betts wrote: > On Fri, Feb 22, 2008 at 11:57:12AM +0000, Richard Boulton wrote: >> I'm not sure whether it's safe if the copy constructor or assignment >> operator on the subclass are used, though - I'll double-check that. > > I think it will fail, because we expect to be able to do things like: > > Xapian::Stem copy_of_stemmer = stemmer; > > And that doesn't work if stemmer is a subclass of Xapian::Stem. > > Mind you, making Xapian::Stem wrap an enum doesn't help here either... I agree. Argh. One API for this, then, would be to change Xapian::Stem to be an abstract class, and move the implementation to a Xapian::SnowballStem class. However, this would break too much existing code to be a reasonable solution, in the near term, anyway. What about the following: - add a Xapian::BaseStem class, which is abstract. - make Xapian::Stem inherit from this. - change TermGenerator and QueryParser to take a Xapian::BaseStem instead of a stem class. User code would continue to work (after a recompile), but users could also create their own subclasses (of BaseStem) and use them with TermGenerator and QueryParser. Really though, what we want is a better reference counting scheme which allows the reference counted objects to be subclassed. Bug 186 is the relevant one, I suppose (though coming at it from the opposite direction - it's about subclassable objects not being reference counted): http://xapian.org/cgi-bin/bugzilla/show_bug.cgi?id=186 However, I'm not sure how we could implement this - any ideas? -- -- Richard
RSS Feed