MyGUI 3.4.1
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#if MYGUI_DEBUG_MODE == 1
44 void checkIndexes();
45#endif
46
47 private:
48 typedef std::vector<size_t> VectorSizeT;
49
50 // маппинг с индексов, которые видны наружу
51 // на индексы которые реально используются данными
52 VectorSizeT mIndexFace;
53
54 // маппинг с индексов, которые используют данные
55 // на индексы которые виндны наружу
56 VectorSizeT mIndexBack;
57 };
58
59} // namespace MyGUI
60
61#endif // MYGUI_BIINDEX_BASE_H_
#define MYGUI_EXPORT
virtual ~BiIndexBase()=default