MyGUI 3.4.3
MyGUI_BiIndexBase.h
Go to the documentation of this file.
1/*
2 * This source file is part of MyGUI. For the latest info, see http://mygui.info/
3 * Distributed under the MIT License
4 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
5 */
6
7#ifndef MYGUI_BIINDEX_BASE_H_
8#define MYGUI_BIINDEX_BASE_H_
9
10#include "MyGUI_Prerequest.h"
11#include <vector>
12#include <stddef.h>
13
14namespace MyGUI
15{
16
18 {
19 public:
20 virtual ~BiIndexBase() = default;
21
22 protected:
23 size_t getIndexCount() const;
24
25 size_t insertItemAt(size_t _index);
26
27 size_t removeItemAt(size_t _index);
28
29 void removeAllItems();
30
31 // на входе индексы пользователя, на выходе реальные индексы
32 size_t convertToBack(size_t _index) const;
33
34 // на входе индексы реальные, на выходе, то что видит пользователь
35 size_t convertToFace(size_t _index) const;
36
37 // меняет местами два индекса, индексы со стороны пользователя
38 void swapItemsFaceAt(size_t _index1, size_t _index2);
39
40 // меняет местами два индекса, индексы со сторонны данных
41 void swapItemsBackAt(size_t _index1, size_t _index2);
42
43 void checkIndexes();
44
45 private:
46 using VectorSizeT = std::vector<size_t>;
47
48 // маппинг с индексов, которые видны наружу
49 // на индексы которые реально используются данными
50 VectorSizeT mIndexFace;
51
52 // маппинг с индексов, которые используют данные
53 // на индексы которые виндны наружу
54 VectorSizeT mIndexBack;
55 };
56
57} // namespace MyGUI
58
59#endif // MYGUI_BIINDEX_BASE_H_
#define MYGUI_EXPORT
void swapItemsBackAt(size_t _index1, size_t _index2)
size_t removeItemAt(size_t _index)
size_t insertItemAt(size_t _index)
size_t convertToBack(size_t _index) const
virtual ~BiIndexBase()=default
size_t convertToFace(size_t _index) const
size_t getIndexCount() const
void swapItemsFaceAt(size_t _index1, size_t _index2)