MyGUI
3.2.1
|
00001 /* 00002 * This source file is part of MyGUI. For the latest info, see http://mygui.info/ 00003 * Distributed under the MIT License 00004 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT) 00005 */ 00006 00007 #ifndef __MYGUI_BIINDEX_BASE_H__ 00008 #define __MYGUI_BIINDEX_BASE_H__ 00009 00010 #include "MyGUI_Prerequest.h" 00011 00012 namespace MyGUI 00013 { 00014 00015 class MYGUI_EXPORT BiIndexBase 00016 { 00017 public: 00018 BiIndexBase(); 00019 virtual ~BiIndexBase(); 00020 00021 protected: 00022 size_t getIndexCount() const; 00023 00024 size_t insertItemAt(size_t _index); 00025 00026 size_t removeItemAt(size_t _index); 00027 00028 void removeAllItems(); 00029 00030 // на входе индексы пользователя, на выходе реальные индексы 00031 size_t convertToBack(size_t _index) const; 00032 00033 // на входе индексы реальные, на выходе, то что видит пользователь 00034 size_t convertToFace(size_t _index) const; 00035 00036 // меняет местами два индекса, индексы со стороны пользователя 00037 void swapItemsFaceAt(size_t _index1, size_t _index2); 00038 00039 // меняет местами два индекса, индексы со сторонны данных 00040 void swapItemsBackAt(size_t _index1, size_t _index2); 00041 00042 #if MYGUI_DEBUG_MODE == 1 00043 void checkIndexes(); 00044 #endif 00045 00046 private: 00047 typedef std::vector<size_t> VectorSizeT; 00048 00049 // маппинг с индексов, которые видны наружу 00050 // на индексы которые реально используются данными 00051 VectorSizeT mIndexFace; 00052 00053 // маппинг с индексов, которые используют данные 00054 // на индексы которые виндны наружу 00055 VectorSizeT mIndexBack; 00056 }; 00057 00058 } // namespace MyGUI 00059 00060 #endif // __MYGUI_BIINDEX_BASE_H__