MyGUI  3.2.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 
12 namespace MyGUI
13 {
14 
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__