// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
-/*!
+/**
@page overview_refcount Reference Counting
@section overview_refcount_equality Object Comparison
-The == and != operators of the reference counted classes always do a @c deep
-comparison. This means that the equality operator will return @true if two
-objects are identical and not only if they share the same data.
+The == and != operators of @ref overview_refcount_list "the reference counted classes"
+always do a <em>deep comparison</em>. This means that the equality operator
+will return @true if two objects are identical and not only if they share the
+same data.
Note that wxWidgets follows the <em>STL philosophy</em>: when a comparison
operator can not be implemented efficiently (like for e.g. wxImage's ==
Also note that if you only need to do a @c shallow comparison between two
wxObject derived classes, you should not use the == and != operators but
-rather the wxObject::IsSameAs function.
+rather the wxObject::IsSameAs() function.
@section overview_refcount_destruct Object Destruction
Note that the list above reports the objects which are reference counted in all
ports of wxWidgets; some ports may use this technique also for other classes.
+All the objects implement a function @b IsOk() to test if they are referencing valid
+data; when the objects are in uninitialized state, you can only use the @b IsOk() getter;
+trying to call any other getter, e.g. wxBrush::GetStyle() on the ::wxNullBrush object,
+will result in an assert failure in debug builds.
+
@section overview_refcount_object Making Your Own Reference Counted Class
you will need to call this function.
@note Any time you need to actually modify the data placed inside your wxObject
-derived class, you must first call the wxObject::UnShare function to ensure
+derived class, you must first call the wxObject::UnShare() function to ensure
that the modifications won't affect other instances which are eventually
sharing your object's data.