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
© Овсеевич Р.В. Документация по CntmLib 1.1.4 от 28 May 2008. Создано системой 1.5.3 |