1\section{\class{wxObject}}\label{wxobject} 2 3This is the root class of all wxWidgets classes. 4It declares a virtual destructor which ensures that 5destructors get called for all derived class objects where necessary. 6 7wxObject is the hub of a dynamic object creation 8scheme, enabling a program to create instances of a class only knowing 9its string class name, and to query the class hierarchy. 10 11The class contains optional debugging versions 12of {\bf new} and {\bf delete}, which can help trace memory allocation 13and deallocation problems. 14 15wxObject can be used to implement \helpref{reference counted}{trefcount} objects, 16such as wxPen, wxBitmap and others (see \helpref{this list}{refcountlist}). 17 18\wxheading{See also} 19 20\helpref{wxClassInfo}{wxclassinfo}, \helpref{Debugging overview}{debuggingoverview},\rtfsp 21\helpref{wxObjectRefData}{wxobjectrefdata} 22 23\latexignore{\rtfignore{\wxheading{Members}}} 24 25\membersection{wxObject::wxObject}\label{wxobjectctor} 26 27\func{}{wxObject}{\void} 28 29\func{}{wxObject}{\param{const wxObject\&}{ other}} 30 31Default and copy constructors. 32 33\membersection{wxObject::\destruct{wxObject}}\label{wxobjectdtor} 34 35\func{}{wxObject}{\void} 36 37Destructor. Performs dereferencing, for those objects 38that use reference counting. 39 40\membersection{wxObject::m\_refData}\label{wxobjectmrefdata} 41 42\member{wxObjectRefData* }{m\_refData} 43 44Pointer to an object which is the object's reference-counted data. 45 46\wxheading{See also} 47 48\helpref{wxObject::Ref}{wxobjectref}, \helpref{wxObject::UnRef}{wxobjectunref},\rtfsp 49\helpref{wxObject::SetRefData}{wxobjectsetrefdata},\rtfsp 50\helpref{wxObject::GetRefData}{wxobjectgetrefdata},\rtfsp 51\helpref{wxObjectRefData}{wxobjectrefdata} 52 53\membersection{wxObject::Dump}\label{wxobjectdump} 54 55\func{void}{Dump}{\param{ostream\&}{ stream}} 56 57A virtual function that may be redefined by derived classes to allow dumping of 58memory states. 59 60This function is only defined in debug build and doesn't exist at all if 61{\tt \_\_WXDEBUG\_\_} is not defined. 62 63\wxheading{Parameters} 64 65\docparam{stream}{Stream on which to output dump information.} 66 67\wxheading{Remarks} 68 69Currently wxWidgets does not define Dump for derived classes, but 70programmers may wish to use it for their own applications. Be sure to 71call the Dump member of the class's base class to allow all information to be 72dumped. 73 74The implementation of this function in wxObject just writes the class name of 75the object. 76 77\membersection{wxObject::GetClassInfo}\label{wxobjectgetclassinfo} 78 79\func{wxClassInfo *}{GetClassInfo}{\void} 80 81This virtual function is redefined for every class that requires run-time 82type information, when using DECLARE\_CLASS macros. 83 84\membersection{wxObject::GetRefData}\label{wxobjectgetrefdata} 85 86\constfunc{wxObjectRefData*}{GetRefData}{\void} 87 88Returns the {\bf m\_refData} pointer. 89 90\wxheading{See also} 91 92\helpref{wxObject::Ref}{wxobjectref}, \helpref{wxObject::UnRef}{wxobjectunref}, \helpref{wxObject::m\_refData}{wxobjectmrefdata},\rtfsp 93\helpref{wxObject::SetRefData}{wxobjectsetrefdata},\rtfsp 94\helpref{wxObjectRefData}{wxobjectrefdata} 95 96\membersection{wxObject::IsKindOf}\label{wxobjectiskindof} 97 98\func{bool}{IsKindOf}{\param{wxClassInfo *}{info}} 99 100Determines whether this class is a subclass of (or the same class as) 101the given class. 102 103\wxheading{Parameters} 104 105\docparam{info}{A pointer to a class information object, which may be obtained 106by using the CLASSINFO macro.} 107 108\wxheading{Return value} 109 110true if the class represented by {\it info} is the same class as 111this one or is derived from it. 112 113\wxheading{Example} 114 115\begin{verbatim} 116 bool tmp = obj->IsKindOf(CLASSINFO(wxFrame)); 117\end{verbatim} 118 119\membersection{wxObject::IsSameAs}\label{wxobjectissameas} 120 121\func{bool}{IsSameAs}{\param{const wxObject\& }{ obj}} 122 123Returns \true if this object has the same data pointer as \arg{obj}. Notice 124that \true is returned if the data pointers are \NULL in both objects. 125 126This function only does a \emph{shallow} comparison, i.e. it doesn't compare 127the objects pointed to by the data pointers of these objects. 128 129\membersection{wxObject::Ref}\label{wxobjectref} 130 131\func{void}{Ref}{\param{const wxObject\& }{clone}} 132 133Makes this object refer to the data in {\it clone}. 134 135\wxheading{Parameters} 136 137\docparam{clone}{The object to `clone'.} 138 139\wxheading{Remarks} 140 141First this function calls \helpref{wxObject::UnRef}{wxobjectunref} on itself 142to decrement (and perhaps free) the data it is currently referring to. 143 144It then sets its own m\_refData to point to that of {\it clone}, and increments the reference count 145inside the data. 146 147\wxheading{See also} 148 149\helpref{wxObject::UnRef}{wxobjectunref}, \helpref{wxObject::m\_refData}{wxobjectmrefdata},\rtfsp 150\helpref{wxObject::SetRefData}{wxobjectsetrefdata}, \helpref{wxObject::GetRefData}{wxobjectgetrefdata},\rtfsp 151\helpref{wxObjectRefData}{wxobjectrefdata} 152 153\membersection{wxObject::SetRefData}\label{wxobjectsetrefdata} 154 155\func{void}{SetRefData}{\param{wxObjectRefData*}{ data}} 156 157Sets the {\bf m\_refData} pointer. 158 159\wxheading{See also} 160 161\helpref{wxObject::Ref}{wxobjectref}, \helpref{wxObject::UnRef}{wxobjectunref}, \helpref{wxObject::m\_refData}{wxobjectmrefdata},\rtfsp 162\helpref{wxObject::GetRefData}{wxobjectgetrefdata},\rtfsp 163\helpref{wxObjectRefData}{wxobjectrefdata} 164 165\membersection{wxObject::UnRef}\label{wxobjectunref} 166 167\func{void}{UnRef}{\void} 168 169Decrements the reference count in the associated data, and if it is zero, deletes the data. 170The {\bf m\_refData} member is set to NULL. 171 172\wxheading{See also} 173 174\helpref{wxObject::Ref}{wxobjectref}, \helpref{wxObject::m\_refData}{wxobjectmrefdata},\rtfsp 175\helpref{wxObject::SetRefData}{wxobjectsetrefdata}, \helpref{wxObject::GetRefData}{wxobjectgetrefdata},\rtfsp 176\helpref{wxObjectRefData}{wxobjectrefdata} 177 178\membersection{wxObject::UnShare}\label{wxobjectunshare} 179 180\func{void}{UnShare}{\void} 181 182Ensure that this object's data is not shared with any other object. 183 184if we have no 185data, it is created using CreateRefData() below, if we have shared data 186it is copied using CloneRefData(), otherwise nothing is done. 187 188 189\membersection{wxObject::operator new}\label{wxobjectnew} 190 191\func{void *}{new}{\param{size\_t }{size}, \param{const wxString\& }{filename = NULL}, \param{int}{ lineNum = 0}} 192 193The {\it new} operator is defined for debugging versions of the library only, when 194the identifier \_\_WXDEBUG\_\_ is defined. It takes over memory allocation, allowing 195wxDebugContext operations. 196 197\membersection{wxObject::operator delete}\label{wxobjectdelete} 198 199\func{void}{delete}{\param{void }{buf}} 200 201The {\it delete} operator is defined for debugging versions of the library only, when 202the identifier \_\_WXDEBUG\_\_ is defined. It takes over memory deallocation, allowing 203wxDebugContext operations. 204 205\section{\class{wxObjectRefData}}\label{wxobjectrefdata} 206 207This class is used to store reference-counted data. Derive classes from this to 208store your own data. When retrieving information from a {\bf wxObject}'s reference data, 209you will need to cast to your own derived class. 210 211\wxheading{Friends} 212 213\helpref{wxObject}{wxobject} 214 215\wxheading{See also} 216 217\helpref{wxObject}{wxobject} 218 219\latexignore{\rtfignore{\wxheading{Members}}} 220 221 222\membersection{wxObjectRefData::wxObjectRefData}\label{wxobjectrefdatactor} 223 224\func{}{wxObjectRefData}{\void} 225 226Default constructor. Initialises the {\bf m\_count} member to 1. 227 228\membersection{wxObjectRefData::\destruct{wxObjectRefData}}\label{wxobjectrefdatadtor} 229 230\func{}{wxObjectRefData}{\void} 231 232Destructor. 233 234\membersection{wxObjectRefData::GetRefCount}\label{wxobjectrefdatagetrefcount} 235 236\constfunc{int}{GetRefCount}{\void} 237 238Returns the reference count associated with this shared data. 239When this goes to zero during a \helpref{wxObject::UnRef}{wxobjectunref}, an object 240can delete this {\bf wxObjectRefData} object. 241 242