MyGUI: MyGUI_BiIndexBase.h Source File

MyGUI 3.2.2

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
12 namespace MyGUI
13 {
14
15 class MYGUI_EXPORT BiIndexBase
16 {
17 public:
18 BiIndexBase();
19 virtual ~BiIndexBase();
20
21 protected:
22 size_t getIndexCount() const;
23
24 size_t insertItemAt(size_t _index);
25
26 size_t removeItemAt(size_t _index);
27
28 void removeAllItems();
29
30 // на входе индексы пользователя, на выходе реальные индексы
31 size_t convertToBack(size_t _index) const;
32
33 // на входе индексы реальные, на выходе, то что видит пользователь
34 size_t convertToFace(size_t _index) const;
35
36 // меняет местами два индекса, индексы со стороны пользователя
37 void swapItemsFaceAt(size_t _index1, size_t _index2);
38
39 // меняет местами два индекса, индексы со сторонны данных
40 void swapItemsBackAt(size_t _index1, size_t _index2);
41
42 #if MYGUI_DEBUG_MODE == 1
43 void checkIndexes();
44 #endif
45
46 private:
47 typedef std::vector<size_t> VectorSizeT;
48
49 // маппинг с индексов, которые видны наружу
50 // на индексы которые реально используются данными
51 VectorSizeT mIndexFace;
52
53 // маппинг с индексов, которые используют данные
54 // на индексы которые виндны наружу
55 VectorSizeT mIndexBack;
56 };
57
58 } // namespace MyGUI
59
60 #endif // MYGUI_BIINDEX_BASE_H_
MyGUI_Prerequest.h
MYGUI_EXPORT
#define MYGUI_EXPORT
Definition: MyGUI_Platform.h:103
MyGUI::BiIndexBase
Definition: MyGUI_BiIndexBase.h:15
MyGUI
Definition: MyGUI_ActionController.h:14