Wrapping a C library with its own GC + classes vs refcounted structs
Laeeth Isharc via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Jan 12 02:03:08 PST 2015
> Laeeth.
> Thanks for the reply. Yes, this concerns my HDF5 wrapper
> project; the main concern is not that the memory consumption of
> course, but rather explicitly controlling lifetimes of the
> objects (especially objects like files -- so you are can be
> sure there are no zombie handles floating around).
An easy way is to just use scope(exit) to either close the HDF5
object directly, or indirectly call destroy on the wrapper. If
you want to make it 'idiot proof', maybe ref counting structs
will get you there (at possible cost of small overhead). I
personally don't tend to forget to close a file or dataset; its
much easier up forget to close a data type or data space
descriptor.
But struct vs class depends somewhat on how you want to represent
the object hierarchy in D, no ?
Incidentally there are some nice things one can do using compile
time code to map D structs to HDF5 types (I have implemented a
simple version of this in my wrapper). A bit more work the other
way around if you don't know what's in the file beforehand.
More information about the Digitalmars-d-learn
mailing list