contain.h File Reference

#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 Documentation

#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 PBoolean MakeUnique() \
      { if(par::MakeUnique())return PTrue; CloneContents(this);return PFalse; } \
  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); }
Macro to declare funtions required in a container. This macro is used to declare all the functions that should be implemented for a working container class. It will also define some inline code for some standard function behaviour.

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(); }

PBoolean MakeUnique() { if (par::MakeUnique()) return PTrue; CloneContents(c); return PFalse; } {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.


Generated on Mon Feb 23 01:57:55 2009 for PTLib by  doxygen 1.5.1