00001 #ifndef SMARTPROPERTYPOINTER_H 00002 #define SMARTPROPERTYPOINTER_H 00003 /******************************************************************************* 00004 * ALMA - Atacama Large Millimiter Array 00005 * (c) European Southern Observatory, 2004 00006 * 00007 *This library is free software; you can redistribute it and/or 00008 *modify it under the terms of the GNU Lesser General Public 00009 *License as published by the Free Software Foundation; either 00010 *version 2.1 of the License, or (at your option) any later version. 00011 * 00012 *This library is distributed in the hope that it will be useful, 00013 *but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 *Lesser General Public License for more details. 00016 * 00017 *You should have received a copy of the GNU Lesser General Public 00018 *License along with this library; if not, write to the Free Software 00019 *Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00020 * 00021 * "@(#) $Id: baciSmartPropertyPointer.h,v 1.4 2005/01/15 00:20:38 dfugate Exp $" 00022 * 00023 * who when what 00024 * -------- -------- ---------------------------------------------- 00025 * acaproni 2004-04-06 created 00026 */ 00027 00033 #include <baciCharacteristicComponentImpl.h> 00034 00035 #include <baciSmartServantPointer.h> 00036 00037 namespace baci { 00038 00044 template<class T> 00045 class SmartPropertyPointer: public SmartServantPointer<T> { 00046 private: 00047 00049 CharacteristicComponentImpl* component_mp; 00050 00051 public: 00059 SmartPropertyPointer(CharacteristicComponentImpl* component_p); 00060 00069 SmartPropertyPointer(T* prop,CharacteristicComponentImpl* component_p); 00070 00077 ~SmartPropertyPointer(); 00078 00083 SmartPropertyPointer<T>* operator=(const T*); 00084 00085 private: 00090 SmartPropertyPointer(); 00091 00096 void init(); 00097 00098 }; 00099 } // End of namespace baci 00100 00101 #include <baciSmartPropertyPointer.i> 00102 00103 00104 #endif /*SMARTPROPERTYPOINTER_H*/