00001 /***************************************************************************** 00002 * Copyright (C) 2011 by Benjamin Hadorn (b_hadorn@bluewin.ch) 00003 ***************************************************************************** 00004 * Project : Zeus Base Library 00005 * Module : ZObject 00006 * Package : Zeus.ZeusBase.System 00007 * Author : Benjamin Hadorn 00008 * Date : 27.12.2011 00009 * System : Zeus-Framework 00010 ***************************************************************************** 00011 * Licence: * 00012 * This library is free software; you can redistribute it and/or modify * 00013 * it under the terms of the GNU Lesser General Public License as * 00014 * published by the Free Software Foundation; either version * 00015 * 2.1 of the License, or (at your option) any later version. * 00016 * * 00017 * This library is distributed in the hope that it will be useful, * 00018 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 00020 * GNU Lesser General Public License for more details. * 00021 * * 00022 * You should have received a copy of the GNU Lesser General Public * 00023 * License along with this library; if not, write to the Free Software * 00024 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA * 00025 *****************************************************************************/ 00026 00027 /***************************************************************************** 00028 * Changes: 00029 * 27.12.2011 bha: created zeus 2.0 00030 *****************************************************************************/ 00031 00032 #ifndef ZObjectH 00033 #define ZObjectH 00034 00035 #include <zeusbase/System/Interfaces/IZUnknown.hpp> 00036 #include <zeusbase/System/AutoPtr.hpp> 00037 #include <zeusbase/System/String.h> 00038 #include <zeusbase/System/GUIDWrapper.h> 00039 00040 00041 #if defined(ENABLE_LINUX_BINDING) 00042 00043 #else 00044 00045 #ifdef USE_WINDOWS_H 00046 #include <windows.h> 00047 #endif 00048 00049 #endif 00050 00051 00052 BEGIN_NAMESPACE_Zeus 00053 00054 /***************************************************************************/ 00057 /***************************************************************************/ 00058 zeusbase_class TZObject : protected IZUnknown 00059 { 00060 public: 00061 TZObject(); 00062 TZObject(const TString& strName); 00063 TZObject(const IString& strName); 00064 00065 Uint getHash() const; 00066 TString toString() const; 00067 00068 virtual TString getObjName() const; 00069 virtual void setObjName(const TString& name); 00070 00071 //Methoden des IZUnknown 00072 MEMORY_MANAGER_DECL 00073 00074 protected: 00075 //these method are protected and must be redeclared public 00076 // for stack objects 00077 virtual ~TZObject(); 00078 00079 TZObject(const TZObject& rObject); 00080 TZObject& operator=(const TZObject& rObject); 00081 00082 Int getRefCounter() const; 00083 Uint m_uiID; 00084 00085 private: 00087 Int m_iRefCounter; 00089 TString m_strName; 00090 }; 00091 00092 //Inline methods 00093 /***************************************************************************/ 00096 /***************************************************************************/ 00097 inline TZObject::~TZObject() 00098 {} 00099 00100 /***************************************************************************/ 00104 /***************************************************************************/ 00105 inline Uint TZObject::getHash() const 00106 { 00107 return reinterpret_cast<Uint>(this); 00108 } 00109 00110 /***************************************************************************/ 00114 /***************************************************************************/ 00115 inline TString TZObject::getObjName() const 00116 { 00117 return m_strName; 00118 } 00119 00120 /***************************************************************************/ 00124 /***************************************************************************/ 00125 inline void TZObject::setObjName(const TString& name) 00126 { 00127 m_strName = name; 00128 } 00129 00130 /***************************************************************************/ 00134 /***************************************************************************/ 00135 inline Int TZObject::getRefCounter() const 00136 { 00137 return m_iRefCounter; 00138 } 00139 00140 00141 END_NAMESPACE_Zeus 00142 #endif