MyGUI  3.4.0
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 
14 namespace 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_
MyGUI::BiIndexBase::~BiIndexBase
virtual ~BiIndexBase()=default
MyGUI_Prerequest.h
MYGUI_EXPORT
#define MYGUI_EXPORT
Definition: MyGUI_Platform.h:89
MyGUI::BiIndexBase
Definition: MyGUI_BiIndexBase.h:18
MyGUI
Definition: MyGUI_ActionController.h:15