trusty (3) shevek_crefbase.3.gz

Provided by: libshevek-doc_1.3-1_all bug

NAME

       shevek::crefbase -

       Circular-dependancy-protected reference-counting object base class.

SYNOPSIS

       #include <crefptr.hh>

   Classes
       class _objptr
       class _ptr
       struct _ptrdata
       class _ptrptr

   Public Member Functions
       void init_done (int code=0)
           After calling this, the object is destroyed without references.

   Static Public Member Functions
       static int set_default_tag (int tag)
           Set the default tag for when init_done is called.
       static void check (bool fatal=true)
           Check if all objects have called init_done.

   Protected Member Functions
       crefbase ()
           Constructor, which is called when an object is created.
       virtual ~crefbase ()
           Virtual destructor, which does nothing except allowing derived class to have a virtual destructor.

   Friends
       class crefptr

Detailed Description

       Circular-dependancy-protected reference-counting object base class.

       Objects which derive from this class are reference-counted in a way that detects dependency loops and
       destroys the entire loop when it is no longer externally referenced. For this, it is important that
       objects which contain pointers register them appropriately.

Member Function Documentation

   static void shevek::crefbase::check (boolfatal = true) [inline, static]
       Check if all objects have called init_done. When debugging is enabled, this function checks for all
       objects if they have called init_done. When debugging is not enabled, no list of objects is kept, and
       this check does nothing.

   void shevek::crefbase::init_done (intcode = 0) [inline]
       After calling this, the object is destroyed without references. On creation, an object does not have any
       references. To prevent immediate destruction, it is first in an initialisation phase. During that phase,
       it will not be destroyed, even if it has no references. This function should be called immeiately after
       creating the object (normally through crefptr::init): shevek::crefptr <foo> bar = foo::create ().init ();
       If code is not given or 0, the default tag (set with set_default_tag) will be used.

   static int shevek::crefbase::set_default_tag (inttag) [inline, static]
       Set the default tag for when init_done is called. If the tag is not set to 1, a message will be printed
       to standard error on destruction. The previous tag is returned. If tag is set to 0, the old value is not
       changed. The initial default value is 1.

Author

       Generated automatically by Doxygen for libshevek from the source code.