Hi Greg,
Typically in SWORD, the object/factory that created the object is
responsible for deleting the object unless a call was made to something
like 'clone' or 'create'. So, SWMgr will delete all the SWModule
objects it allowcates when the SWMgr object is deleted. If you have
multiple threads in your application, we recommend each thread have its
own SWMgr object because the same SWModule object instances are returned
each time a getModule() call is made to the same instance of SWMgr.
I usually have 3 SWMgr objects I interact with in my apps: one I create
for display, one I create for searching, and one I get from InstallMgr.
The exceptions, as mentioned above, are usually noted in the comments, e.g.,
https://github.com/bibletime/crosswire-sword-mirror/blob/trunk/include/swmodule.h#L486
https://github.com/bibletime/crosswire-sword-mirror/blob/trunk/include/swkey.h#L134
Hope this helps,
Troy
On 3/25/25 7:42 AM, Greg Hellings wrote:
I have a question about pointer lifetime and management when
interacting with libsword: who owns the lifetime and delete management
of pointers coming out of the SWMgr and SWModule calls? For instance:
if I create an SWMgr object and fetch a SWModule* from its get module
methods, who owns deletion of that? Should I preserve the pointer and
have SWMgr delete it when it gets deleted? Or does the caller need to
own deletion of it? Is that instance of the SWModule shared with
everyone else who calls the getter methods, or is it unique per
invocation of the getter?
A similar question regarding getting keys from a module instance. Does
that key live with the module's cleanup, or does the caller now have
responsibility for the instance?
--Greg
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page