On 09/20/2014 01:42 PM, Sven Barth wrote: > On 20.09.2014 13:11, Peter Popov wrote: >> Please do not reference count TObject. This is a uniquely bad and >> unnecessary idea. I will switch to ANSI C if you guys do it > > Please enlighten me why you think it is bad. Give reasons and don't be > like "a farmer doesn't eat what he doesn't know" (rough translation of > a German proverb).
I think I have a reason. First off, I do like refcounting: I use it a lot, *where useful*. To make TObject refcounted would mean that everything is all of the sudden refcounted, what: - Changes the current behavior of classes (bye bye backward compatibility) - Adds performance overhead to every assignment between classes: a {TObject}:= b {TObject}; // Currently the same as a {Pointer}:= b {Pointer}; becomes b.IncRefCount; a.DecRefCount; a's Pointer to instance:= b's Pointer to instance; Throw in the handling of race conditions between threads and the entire thing becomes bloated IMO. - Won't allow the user to cast to and fro between classes and pointers (useful to pass the classes thru an external API back to a pascal callback) What would be handy is a seperate root class that is always refcounted, something like TRefcountedObject or something. On the other hand some directive that makes this class refcounted would also be a good solution IMO (something that works for refcounting in the same way as $M does for RTTI). Just my 5 cents. -- Ewald _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel