Guiliani  Version 2.5 revision 7293 (documentation build 13)
SafeGUIObjectPtr.h
1/*
2* Copyright (C) TES Electronic Solutions GmbH,
3* All Rights Reserved.
4* Contact: info@guiliani.de
5*
6* This file is part of the Guiliani HMI framework
7* for the development of graphical user interfaces on embedded systems.
8*/
9
10#ifndef __SAFEGUIOBJECTPTR_H__
11#define __SAFEGUIOBJECTPTR_H__
12
13#include "eC_TList_doubleLinked.h"
14
15class CGUIObject;
16
17
44{
45public:
49 : m_ptr(NULL)
50 {
51 // Add to list of all existing CSafeGUIObjectPtrs
52 ms_kSafeGUIObjectPointerList.AddAtEnd(this);
53 }
54
59 : m_ptr(ptr)
60 {
61 // Add to list of all existing CSafeGUIObjectPtrs
62 ms_kSafeGUIObjectPointerList.AddAtEnd(this);
63 }
64
69 {
70 m_ptr = ptr.get();
71 // Add to list of all existing CSafeGUIObjectPtrs
72 ms_kSafeGUIObjectPointerList.AddAtEnd(this);
73 }
74
78 {
79 Reset();
80 ms_kSafeGUIObjectPointerList.Remove(this);
81 }
82
86 void Register()
87 {
88 // Add uniquely to list of all existing CSafeGUIObjectPtrs
89 ms_kSafeGUIObjectPointerList.AddUniqueAtEnd(this);
90 }
91
92
98 {
99 m_ptr = kSource.m_ptr;
100 return *this;
101 }
102
108 {
109 m_ptr = pkSource;
110 return *this;
111 }
112
116 operator CGUIObject* () const {return m_ptr;}
117
121 CGUIObject& operator* () const {return *m_ptr;}
122
126 CGUIObject* operator-> () const {return m_ptr;}
127
131 CGUIObject* get() const {return m_ptr;}
132
134 void Reset()
135 {
136 // Set internal CGUIObject pointer to NULL
137 m_ptr = NULL;
138 }
139
140private:
141 friend class CGUIObject;
142
144 static void NotifyOfDestruction(const CGUIObject* ptr);
145
148 static eC_TListDoubleLinked< CSafeGUIObjectPtr*> ms_kSafeGUIObjectPointerList;
149
151 CGUIObject* m_ptr;
152};
153
154
155#endif //__SAFEGUIOBJECTPTR_H__
This is the Guiliani base class all controls are derived from.
Definition: GUIObject.h:79
Smart pointer to a CGUIObject which will automatically be set to NULL if the corresponding GUIObject ...
Definition: SafeGUIObjectPtr.h:44
CGUIObject * operator->() const
Definition: SafeGUIObjectPtr.h:126
CGUIObject * get() const
Definition: SafeGUIObjectPtr.h:131
CSafeGUIObjectPtr(CGUIObject *ptr)
Definition: SafeGUIObjectPtr.h:58
void Register()
Definition: SafeGUIObjectPtr.h:86
CSafeGUIObjectPtr(const CSafeGUIObjectPtr &ptr)
Definition: SafeGUIObjectPtr.h:68
~CSafeGUIObjectPtr()
Definition: SafeGUIObjectPtr.h:77
CSafeGUIObjectPtr()
Definition: SafeGUIObjectPtr.h:48
CSafeGUIObjectPtr & operator=(const CSafeGUIObjectPtr &kSource)
Definition: SafeGUIObjectPtr.h:97
void Reset()
Helper function to reset internal pointer.
Definition: SafeGUIObjectPtr.h:134
CGUIObject & operator*() const
Definition: SafeGUIObjectPtr.h:121
eC_Bool Remove(SafeIterator &kIter)
Definition: eC_TList_doubleLinked.h:868
eC_Bool AddUniqueAtEnd(const T &tValue)
Definition: eC_TList_doubleLinked.h:780
void AddAtEnd(const T &tValue)
Definition: eC_TList_doubleLinked.h:670