NAME

     QDeepCopy - Template class which ensures that


SYNOPSIS

     All the functions in this class are reentrant when Qt is
     built with thread support.</p>

     #include <qdeepcopy.h>

  Public Members
     QDeepCopy ()
     QDeepCopy ( const T & t )
     QDeepCopy<T> & operator= ( const T & t )
     operator T ()


DESCRIPTION

     The QDeepCopy class is a template class which ensures that
     implicitly shared and explicitly shared classes reference
     unique data.

     Normally, shared copies reference the same data to optimize
     memory use and for maximum speed. In the example below, s1,
     s2, s3, s4 and s5 share data.

         // all 5 strings share the same data
         QString s1 = "abcd";
         QString s2 = s1;
         QString s3 = s2;
         QString s4 = s3;
         QString s5 = s2;

     QDeepCopy can be used several ways to ensure that an object
     references unique, unshared data. In the example below, s1,
     s2 and s5 share data, while neither s3 nor s4 share data.

         // s1, s2 and s5 share the same data, neither s3 nor s4 are shared
         QString s1 = "abcd";
         QString s2 = s1;
         QDeepCopy<QString> s3 = s2;  // s3 is a deep copy of s2
         QString s4 = s3;             // s4 is a deep copy of s3
         QString s5 = s2;

     In the example below, s1, s2 and s5 share data, and s3 and
     s4 share data.

         // s1, s2 and s5 share the same data, s3 and s4 share the same data
         QString s1 = "abcd";
         QString s2 = s1;
         QString s3 = QDeepCopy<QString>( s2 );  // s3 is a deep copy of s2
         QString s4 = s3;                        // s4 is a shallow copy of s3
         QString s5 = s2;

     QDeepCopy can also provide safety in multithreaded
     applications that use shared classes. In the example below,
     the variable global_string is used safely since the data
     contained in global_string is always a deep copy. This
     ensures that all threads get a unique copy of the data, and
     that any assignments to global_string will result in a deep
     copy.

         QDeepCopy<QString> global_string;  // global string data
         QMutex global_mutex;               // mutex to protext global_string
         ...
         void setGlobalString( const QString &str )
         {
             global_mutex.lock();
             global_string = str;           // global_string is a deep copy of str
             global_mutex.unlock();
         }
         ...
         void MyThread::run()
         {
             global_mutex.lock();
             QString str = global_string;          // str is a deep copy of global_string
             global_mutex.unlock();
             // process the string data
             ...
             // update global_string
             setGlobalString( str );
         }

     Warning: It is the application developer's responsibility to
     protect the object shared across multiple threads.

     The examples above use QString, which is an implicitly
     shared class. The behavior of QDeepCopy is the same when
     using explicitly shared classes like QByteArray.

     Currently, QDeepCopy works with the following classes:

     QMemArray (including subclasses like QByteArray and QCString)

     QMap

     QString

QValueStack)
     QValueList (including subclasses like QStringList and

     QValueVector

     See also Thread Support in Qt, Implicitly and Explicitly
     Shared Classes, and Non-GUI Classes.


MEMBER FUNCTION DOCUMENTATION


QDeepCopy::QDeepCopy ()

     Constructs an empty instance of type T.


QDeepCopy::QDeepCopy ( const T & t )

     Constructs a deep copy of t.


QDeepCopy::operator T ()

     Returns a deep copy of the encapsulated data.


QDeepCopy & QDeepCopy::operator= ( const T & t )

     Assigns a deep copy of t.



SEE ALSO

     http://doc.trolltech.com/qdeepcopy.html
     http://www.trolltech.com/faq/tech.html


COPYRIGHT

     Copyright 1992-2001 Trolltech AS, http://www.trolltech.com.
     See the license file included in the distribution for a
     complete license statement.


AUTHOR

     Generated automatically from the source code.


BUGS

     If you find a bug in Qt, please report it as described in
     http://doc.trolltech.com/bughowto.html.  Good bug reports
     help us to help you. Thank you.

     The definitive Qt documentation is provided in HTML format;
     it is located at $QTDIR/doc/html and can be read using Qt
     Assistant or with a web browser. This man page is provided
     as a convenience for those users who prefer man pages,
     although this format is not officially supported by
     Trolltech.

     If you find errors in this manual page, please report them
     to qt-bugs@trolltech.com.  Please include the name of the
     manual page (qdeepcopy.3qt) and the Qt version (3.2.0b2).












Man(1) output converted with man2html