[sword-devel] Strange option filters

Jaak Ristioja jaak at ristioja.ee
Wed Nov 30 15:03:26 MST 2016


On 27.10.2016 22:54, Jaak Ristioja wrote:
> Hi!
> 
> While refactoring some option filters code for Sword++ I found two
> strange option filters, GreekLexAttribs and PapyriPlain which inherit
> from SWOptionFilter and use SWOptionFilter::SWOptionFilter(). This
> behavior was introduced in SVN 1864:
> 
>     commit bdc81675088ca687338ca29acef6c384710b6bcf
>     Author: scribe <scribe at bcd7d363-81e1-0310-97ec-a550e20fc99c>
>     Date:   Sun Nov 20 06:06:40 2005 +0000
> 
>                 Cleaned up headers to remove unnecessary includes
> 
>     git-svn-id: https://crosswire.org/svn/sword/trunk@1864
> bcd7d363-81e1-0310-97ec-a550e20fc99c
> 
> Neither of those classes override any of the SWOptionFilter methods for
> options, hence the effects of SWOptionFilter::SWOptionFilter() are
> permanent for instances of these classes. This means that
> getOptionName() returns "" for both of these classes. This looks as if
> it could cause problems for SWMgr which seems to rely on these being
> unique strings for each class (e.g. in SWMgr::AddGlobalOptions). So its
> rather confusing.
> 
> Some SWMgr methods test whether getOptionName() returns NULL. I couldn't
> find any conclusive hints in Sword source code to describe the rationale
> of it returning NULL. None of the Sword classes themselves seem to
> return NULL themselves. So the only possible way for getOptionName() to
> return NULL is for some child class overriding getOptionName() or
> overwriting that protected field. Before SVN 1864 these virtual methods
> were also part of SWFilter and their defaults returned NULL (well, 0).
> Can someone please enlighten me about this code?
> 
> Thanks!
> 
> Many blessings,
> Jaak
> 
> PS: Should these two classes actually be simple On/Off-style option
> filters and properly call the other SWOptionFilter constructor?

Bump.




More information about the sword-devel mailing list