sculpto
layers_stack.h
Go to the documentation of this file.
1/*!****************************************************************//*!*
2 * \file layers_stack.h
3 * \brief Application layers stack class definition module.
4 *
5 * \author Sabitov Kirill
6 * \date 26 June 2022
7 *********************************************************************/
8
9#pragma once
10
11#include "layer.h"
12
13namespace scl
14{
17 {
18 using layers_list = std::vector<layer *>;
19 using iterator = layers_list::iterator;
20 using reverse_iterator = layers_list::reverse_iterator;
21 using const_iterator = layers_list::const_iterator;
22 using const_reverse_iterator = layers_list::const_reverse_iterator;
23
24 private:
25 layers_list Layers {};
26 u32 LayerIndex = 0;
27
28 public:
30 layers_stack() = default;
31
34
35 /*!*
36 * Push common layer to stack function.
37 *
38 * \param Layer - layer to push to stack.
39 * \return None.
40 */
41 void Push(layer *Layer);
42
43 /*!*
44 * Push overlay layer (e.g. GUI) to stack function.
45 *
46 * \param Layer - layer to push to stack.
47 * \return None.
48 */
49 void PushOverlay(layer *Layer);
50
51 /*!*
52 * Pop common layer from stack function.
53 *
54 * \param Layer - layer to push to stack.
55 * \return None.
56 */
57 void Pop(layer *Layer);
58
59 /*!*
60 * Pop overlay layer (e.g. GUI) from stack function.
61 *
62 * \param Layer - layer to push to stack.
63 * \return None.
64 */
65 void PopOverlay(layer *Layer);
66
67 public:
68 iterator begin() { return Layers.begin(); }
69 iterator end() { return Layers.end(); }
70 reverse_iterator rbegin() { return Layers.rbegin(); }
71 reverse_iterator rend() { return Layers.rend(); }
72 const_iterator cbegin() const { return Layers.cbegin(); }
73 const_iterator cend() const { return Layers.cend(); }
74 const_reverse_iterator crbegin() const { return Layers.crbegin(); }
75 const_reverse_iterator crend() const { return Layers.crend(); }
76 };
77}
iterator end()
Definition: layers_stack.h:69
reverse_iterator rbegin()
Definition: layers_stack.h:70
const_iterator cbegin() const
Definition: layers_stack.h:72
void Push(layer *Layer)
layers_stack()=default
void PopOverlay(layer *Layer)
const_reverse_iterator crbegin() const
Definition: layers_stack.h:74
iterator begin()
Definition: layers_stack.h:68
const_reverse_iterator crend() const
Definition: layers_stack.h:75
reverse_iterator rend()
Definition: layers_stack.h:71
void PushOverlay(layer *Layer)
const_iterator cend() const
Definition: layers_stack.h:73
void Pop(layer *Layer)
Base abstract application layer class definition module. Layers are stored in stack....
Definition: base.h:33
uint32_t u32
Definition: math_common.h:21