GenericNoRefPtr.h

См. документацию.
00001 /*
00002  * CntmLib - Подсчет ссылок, потоки, синхронизация, асинхронные процедуры, события
00003  * Copyright (c) 2005, Овсеевич Роман, CntmLib@mail.ru
00004  * _______________________________________________________________________________
00005  * Разрешено свободное использование, копирование, распространение, изменение
00006  * (изменение сведений об авторских правах запрещено). Запрещена продажа и 
00007  * включение всей библиотеки или ее частей в другие библиотеки. В сведениях об
00008  * авторских правах на программу (или сведениях о программе, об авторах, 
00009  * использованных средствах разработки и т.д.) должна быть указана информация
00010  * о библиотеке CntmLib, ее авторе и, возможно, сайте или email'е.
00011  * Библиотека поставляется "как есть", без каких-либо гарантий со стороны автора.
00012  */ 
00013 
00014 #ifndef CNTM_GENERICNOREFPTR_H
00015 #define CNTM_GENERICNOREFPTR_H
00016 #include <Cntm/RefCount/GenericPtr/BasicGenericRefPtr.h>
00017 
00018 namespace Cntm
00019 {
00020         
00021         /**
00022          * Класс обобщенного не ссылочного указателя. Является парным к классу GenericRefPtr и предназначен для хранения указателя на объект с подсчетом ссылок, который в будующем потребуется преобразовать в обобщенный ссылочный указатель.
00023          * 
00024          * При присвоении ему значения изменения счетчика ссылок не производится, однако, если обобщенный не ссылочный указатель присвоить обобщенному ссылочному, то кол-во ссылок на объект изменится (см. класс GenericRefPtr).
00025          * 
00026          * Пример:
00027          * \code
00028          * Class1::Ptr p = new Class1;
00029          * ...
00030          * GenericNoRefPtr gnp = p;
00031          * ...
00032          * {
00033          *              GenericRefPtr gp = gnp; // Увеличение кол-ва ссылок на объект типа Class1 , созданный вначале.
00034          *              ...
00035          * } // В деструкторе gp происходит уменьшение кол-ва ссылок на объект.
00036          * \endcode
00037          * 
00038          * Данный класс наследует BasicGenericRefPtr, в котором определены основные операции над обобщенным ссылочным указателем.
00039          * 
00040          * Данный класс не обеспечивает полную многопоточность. Операция присвоения нового значения требует внешней синхронизации, при условии, что существует возможность того, что в момент присвоения источнику тоже может быть присвоено значение.
00041          * @author Овсеевич Р.
00042          * \ingroup RefCount 
00043          */
00044         class GenericNoRefPtr: public BasicGenericRefPtr
00045         {
00046         public:
00047 
00048                 /**
00049                  * Конструктор по умолчанию. Инициализирует указатель  NULL. 
00050                  */
00051                 GenericNoRefPtr(): BasicGenericRefPtr() {}
00052 
00053                 /**
00054                  * Конструктор инициализации из обычного указателя. 
00055                  */
00056                 template < typename T >
00057                 GenericNoRefPtr(T* Src): BasicGenericRefPtr(Src) {}
00058 
00059                 /**
00060                  * Конструктор инициализации из ссылочного указателя. 
00061                  */
00062                 template < typename T >
00063                 GenericNoRefPtr(const RefPtr < T > & Src): BasicGenericRefPtr(Src) {}
00064 
00065                 /**
00066                  * Конструктор копирования. 
00067                  */
00068                 GenericNoRefPtr(const BasicGenericRefPtr& Src): BasicGenericRefPtr(Src) {}
00069         };
00070 
00071 }
00072 
00073 #endif //CNTM_GENERICNOREFPTR_H

SourceForge.net Logo
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой  doxygen 1.5.3