[getdns-api] Memory part 2 - get and set
Willem Toorop
willem at nlnetlabs.nl
Tue Jan 21 10:28:08 CET 2014
The specification doesn't say anything about memory ownership with the
getdns_(dict|list)_(get|set)_ functions.
To reduce the amount of memory-copies, optimize performance and to
provide the most intuitive interface, in our implementation we have
chosen to let the getters return references to values (except for ints)
and let the setters copy the given value.
It would be wise to document this behaviour in the specification.
I propose to insert to following text before the last paragraph in
section 2:
The helper getter functions return references to getdns_dict,
getdns_list and getdns_bindata data structures. It is
important that the user does not destroy these retrieved
"child" data structures themselves. They will automatically be
destroyed when the containing "parent" data structure is
destroyed. Also, retrieved "child" data structures can not be
used any more after the containing "parent" data structure has
been destroyed.
Should we also mention that a "child" data structure must be destroyed
by the user when it is replaced with a different value in the "parent"
data structure?
For the setters I propose this text to be the last paragraph of section 2.1:
The helper setter functions store copies of the given "child"
values. It is the responsibility of the call to dispose of the
original values.
What do you think?
_______________________________________________
getdns-api mailing list
getdns-api at vpnc.org
More information about the spec
mailing list