Guiliani  Version 2.6 revision 7293 (documentation build 12)
eC_TArrayStack.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#if !defined(EC_TARRAYSTACK_H)
11#define EC_TARRAYSTACK_H
12
13#include "GUIException.h"
14#include "eC_Types.h"
15#include "eC_TArray.h"
16
21{ };
22
35template<typename T>
37{
38public:
43 : m_uiStackPointer(0),
44 m_uiResizeBy(5)
45 { }
46
53 : m_uiStackPointer(0),
54 m_uiResizeBy(5)
55 {
56 m_aElements.SetQuantity(rkSource.GetQuantity(), false);
57 eC_Memcpy(m_aElements.GetArray(), rkSource.m_aElements.GetArray(),
58 m_aElements.GetQuantity() * sizeof(T));
59 }
60
65 { }
66
74 {
75 m_aElements.SetQuantity(rkSource.GetQuantity(), false);
76 eC_Memcpy(m_aElements.GetArray(), rkSource.m_aElements.GetArray(),
77 m_aElements.GetQuantity() * sizeof(T));
78 m_uiStackPointer = rkSource.m_uiStackPointer;
79 return *this;
80 }
81
87 inline eC_UInt GetQuantity() const
88 { return m_uiStackPointer; }
89
95 inline eC_Bool IsEmpty() const
96 { return (m_uiStackPointer == 0); }
97
103 inline void Push(const T& e)
104 {
105 if (m_uiStackPointer >= m_aElements.GetQuantity())
106 {
107 m_aElements.SetQuantity(
108 m_aElements.GetQuantity() + m_uiResizeBy, true);
109 }
110 m_aElements[m_uiStackPointer] = e;
111 m_uiStackPointer++;
112 }
113
121 inline T& Pop()
122 {
123#ifdef GUILIANI_USE_EXCEPTIONS
124 if (m_uiStackPointer == 0)
125 {
127 }
128#endif
129 m_uiStackPointer--;
130 return m_aElements[m_uiStackPointer];
131 }
132
140 inline T& Top() const
141 {
142#ifdef GUILIANI_USE_EXCEPTIONS
143 if (m_uiStackPointer == 0)
144 {
146 }
147#endif
148 return m_aElements[m_uiStackPointer - 1];
149 }
150
151private:
153 eC_TArray<T> m_aElements;
155 eC_UInt m_uiStackPointer;
160 const eC_UInt m_uiResizeBy;
161};
162
163#endif // EC_TARRAYSTACK_H
This is the base class for Guiliani exceptions.
Definition: GUIException.h:42
Exception thrown when read operations Pop() / Top() are called on an empty stack.
Definition: eC_TArrayStack.h:21
Am array based stack container.
Definition: eC_TArrayStack.h:37
eC_Bool IsEmpty() const
Definition: eC_TArrayStack.h:95
void Push(const T &e)
Definition: eC_TArrayStack.h:103
eC_TArrayStack()
Definition: eC_TArrayStack.h:42
eC_TArrayStack< T > & operator=(const eC_TArrayStack< T > &rkSource)
Definition: eC_TArrayStack.h:73
~eC_TArrayStack()
Definition: eC_TArrayStack.h:64
eC_UInt GetQuantity() const
Definition: eC_TArrayStack.h:87
T & Pop()
Definition: eC_TArrayStack.h:121
eC_TArrayStack(const eC_TArrayStack< T > &rkSource)
Definition: eC_TArrayStack.h:52
T & Top() const
Definition: eC_TArrayStack.h:140