From: Ben v. K. <bva...@gm...> - 2005-09-27 22:45:36
|
Hi Rolf, You're right, but there are so few places where this rule is used - that is, most of the time clucene returns a new object, so following the rule in inverse would mean that everything would be being passed by reference. I think that actually the best solution to this problem is to document it, which i have started to do (any helpers? :) ben On 9/27/05, mai...@rs... <mai...@rs...> wrote: > Hello all, > > I'm new to CLucene, and while browsing through the header files, I found = that there is no documentation of ownership rules for objects passed to / r= eceived from CLucene API. > Searching through the mailing list, I came across a message by Mr. van Kl= inken, where he writes the following: > > BEGIN citation > Good point Robert, and it is something that i have been thinking about. I= have tried to build a rule into clucene (though i have probably broken thi= s rule a few times), is that if the function returns a reference, then it = is an internal object and should not be deleted (like hits.doc), and if a = method takes a reference, then this function is 'consuming' the object (li= ke Document.Add), and therefore the object passed should not be deleted. > END citation > > I find it interesting that objects passed by reference are to be deleted = by CLucene, and objects passed as pointers are not. Generally I see people = define the rule just the other way round: An object passed by reference sta= ys owned by the caller; if passed by pointer, ownership is transferred to t= he method being called. To me this seems more logical, and would be consist= ent with the rule that if a reference is returned, the object is still owne= d by the method that returns it, and if a pointer is returned (except const= pointers), the ownership is transferred. > > Is there any special reason why in CLucene it would be the other way roun= d? To me it looks quite strange if I see code like this: > void method(SomeObject& obj) > { > ... > delete &obj; // <<< this really looks strange... > } > > Just being curious > > Rolf Sch=E4uble > > > ------------------------------------------------------- > SF.Net email is sponsored by: > Tame your development challenges with Apache's Geronimo App Server. Downl= oad > it for free - -and be entered to win a 42" plasma tv or your very own > Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php > _______________________________________________ > CLucene-developers mailing list > CLu...@li... > https://lists.sourceforge.net/lists/listinfo/clucene-developers > |