[sword-devel] SWORD + Qt better support

Jaak Ristioja jaak at ristioja.ee
Mon Jul 29 02:21:10 MST 2013


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hi!

On 29.07.2013 11:08, Troy A. Griffitts wrote:
> From the 2 responses from people who use the Bibletime wrappers,
> it sounds like there are many things which are useful for building
> At apps with SWORD. When I responded 'No' to Jaak's prompting to
> consider how bloated the library might get as we enhance the Qt
> integration, I meant the 'no' to mean that I wasn't planning on
> doing much more than the SWBuf, SWKey to QString.
...
> My very modest additions were not meant to replace a rich layer of
> Qt components, but merely to simplify development of them. It was
> the biggest bang for the buck I could see which wasn't too
> intrusive into the engine.

Personally I'd still remove the Qt stuff and keep the Sword interface
as simple as possible. This would make it a bit easier for anybody to
the comprehend the header files, and simplify code maintenance efforts
for Sword developers. In my opinion the overhead for using Sword with
Qt stuff is not that big. On the contrary, I think this would make
Sword biased towards Qt-based projects.

Additionally it seems that in Qt conversion operators are frowned
upon. For example, QString doesn't define conversion operators to and
from std::string but uses explicit methods for that.

> Finally, Jaak, I've considered making SWKey more like an iterator,
> but while it makes things conceptually more familiar at first, it
> loses much of the actual usefulness of the abstraction. Consider
> the parsing and range features of VerseKey, or the very much not
> iterator concepts of TreeKey. We've made these all extend SWKey
> nicely and you can open a module and use it without knowing the
> specifics of its key type, but if you need the more specific
> behavior of, say, getting the children of a node in a TreeKey, then
> you can be specific about it.

I think it is still possible to change them to fulfill standard
iterator requirements without sacrificing these features. Iterators
can still have other methods besides the ones listed in the
requirements. Of course for tree iterators the order of traversal is
somewhat an issue.

> Also SWBuf was initially based on all the std::string functionality
> we used in the engine before we replaced them with SWBuf. Often you
> can simply swap SWBuf for std::string and your code will compile. 
> Functionality beyond std::string (which I feel is a very poorly
> thought out string object along with its wstring counterpart) is
> taken nearly verbatim from Java's String class. So, I hope we
> already do what you've suggested about modeling our string object
> on familiar string object people might be familiar with.

If we expect C++ programmers to be familiar with Java's String object,
then yes. I can only speak for myself and I'm not familiar with it.
Personally I would first have considered subclassing SWBuf from
std::string.

> Please still comment quickly. As soon as everyone is finished with
> their ChangeLog entries, and we drop in a v11n for IBT for the
> Protestant Synodal modules (which should be today or tomorrow) I
> will package up a release candidate. If these small additions do
> not simplify your wrappers and make programming for others without
> your wrappers much easier, we should drop them back out.

Regardless of the advantages and disadvantages of this move towards
Qt, at this point such commits should not go into the branch from
which you plan to release stable version 1.7.0 from. For Sword 1.8.0
this still needs more consideration, but please let's have a STABLE
1.7 series (branch).

Blessings,
Jaak

PS: Why does Sword release from trunk instead of having a different
branch for 1.7?
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.20 (GNU/Linux)

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
PWl+ZcTwn7EI+42zFnWt
=thFB
-----END PGP SIGNATURE-----



More information about the sword-devel mailing list