#include <ptlib/object.h>
#include <ptlib/critsec.h>
#include <ptlib/array.h>
#include <ptlib/lists.h>
#include <ptlib/dict.h>
#include <ptlib/pstring.h>
Go to the source code of this file.
Classes | |
class | PContainerReference |
class | PContainer |
class | PCollection |
Defines | |
#define | PCONTAINERINFO(cls, par) |
#define PCONTAINERINFO | ( | cls, | |||
par | ) |
Value:
PCLASSINFO(cls, par) \ public: \ cls(const cls & c) : par(c) { CopyContents(c); } \ cls & operator=(const cls & c) \ { AssignContents(c); return *this; } \ virtual ~cls() { Destruct(); } \ virtual BOOL MakeUnique() \ { if(par::MakeUnique())return TRUE; CloneContents(this);return FALSE; } \ protected: \ cls(int dummy, const cls * c) : par(dummy, c) { CloneContents(c); } \ virtual void DestroyContents(); \ void CloneContents(const cls * c); \ void CopyContents(const cls & c); \ virtual void AssignContents(const PContainer & c) \ { par::AssignContents(c); CopyContents((const cls &)c); }
This may be used when multiple inheritance requires a special class declaration. Normally, the PDECLARE_CONTAINER# macro would be used, which includes this macro in it.
The default implementation for contructors, destructor, the assignment operator and the MakeUnique() function is as follows: {verbatim} cls(const cls & c) : par(c) { CopyContents(c); }
cls & operator=(const cls & c) { par::operator=(c); return *this; }
cls(int dummy, const cls * c) : par(dummy, c) { CloneContents(c); }
virtual ~cls() { Destruct(); }
BOOL MakeUnique() { if (par::MakeUnique()) return TRUE; CloneContents(c); return FALSE; } {verbatim} Then the DestroyContents()#, CloneContents()# and CopyContents()# functions are declared and must be implemented by the programmer. See the PContainer# class for more information on these functions.