On Sat, 23 Dec 2017 11:30:58 +0000 Andrew Williams <a...@andywilliams.me> said:
> Hi, > > As this thread seems to be descending into word games and (insert > appropriate word) contests I will reiterate my concern: > > efl_add is inconsistent and that should be addressed. do it's not. i explained already that it is not. i'll repeat again. it's consistent: if parent == valid object, then ref is owned by parent else ref is owned by caller/scope. that is consistent. > I hope that is clear enough > Andy > > > On Thu, 21 Dec 2017 at 13:15, Andrew Williams <a...@andywilliams.me> wrote: > > > Hi, > > > > This is now well documented ( > > https://www.enlightenment.org/develop/tutorials/c/eo-refcount.md) but the > > more I use efl_add the more I feel it is confusing especially to new > > developers. > > > > In the current model (if I understand it correctly) > > 1) child = efl_add(klass, parent) means the child must NOT be unfeferenced > > 2) child = efl_add(klass, NULL) means the child should be unreferenced > > 3) child = efl_add_ref(klass, parent) means the child must be unreferenced > > 4) child = efl_add_ref(klass, NULL) somehow means that the child should be > > unreferenced twice > > > > In my opinion 1) and 4) are peculiar and so I provide a proposal to fix > > this: > > > > We could change efl_add to return void. It never retains a reference. If > > the parent is NULL then it should be automatically unref before returning. > > Then efl_add_ref would be changed to mirror this and always retain exactly > > 1 reference - so if parent is NULL there is no double count returned. > > > > Using this model if an Eo * is returned then I know I have a reference and > > must later unref. > > Any need for using the pointer in an efl_add (which is no longer returned) > > would still be supported through efl_added within the constructor. > > > > What do people think about this? I put the suggestion forward to improve > > the symettry with add and unref which is currently confusing. If my > > assumptions above are incorrect please let me know! > > > > Thanks, > > Andy > > -- > > http://andywilliams.me > > http://ajwillia.ms > > > -- > http://andywilliams.me > http://ajwillia.ms > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- Carsten Haitzler - ras...@rasterman.com ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel