38 return mIndexFace.size();
43 #if MYGUI_DEBUG_MODE == 1
49 _index = mIndexFace.size();
53 if (_index == mIndexFace.size())
56 index = mIndexFace.size();
58 mIndexFace.push_back(_index);
59 mIndexBack.push_back(_index);
64 index = mIndexFace[_index];
66 size_t count = mIndexFace.size();
67 for (
size_t pos = 0; pos < count; ++pos)
69 if (mIndexFace[pos] >= index)
72 mIndexFace.insert(mIndexFace.begin() + _index, index);
75 mIndexBack.push_back(0);
76 for (
size_t pos = 0; pos < count; ++pos)
78 mIndexBack[mIndexFace[pos]] = pos;
82 #if MYGUI_DEBUG_MODE == 1
91 #if MYGUI_DEBUG_MODE == 1
97 size_t index = mIndexFace[_index];
99 mIndexFace.erase(mIndexFace.begin() + _index);
100 mIndexBack.pop_back();
102 size_t count = mIndexFace.size();
103 for (
size_t pos = 0; pos < count; ++pos)
105 if (mIndexFace[pos] > index)
107 mIndexBack[mIndexFace[pos]] = pos;
110 #if MYGUI_DEBUG_MODE == 1
126 #if MYGUI_DEBUG_MODE == 1
135 #if MYGUI_DEBUG_MODE == 1
144 #if MYGUI_DEBUG_MODE == 1
149 std::swap(mIndexFace[_index1], mIndexFace[_index2]);
150 std::swap(mIndexBack[mIndexFace[_index1]], mIndexBack[mIndexFace[_index2]]);
156 #if MYGUI_DEBUG_MODE == 1
161 std::swap(mIndexBack[_index1], mIndexBack[_index2]);
162 std::swap(mIndexFace[mIndexBack[_index1]], mIndexFace[mIndexBack[_index2]]);
165 #if MYGUI_DEBUG_MODE == 1
167 void BiIndexBase::checkIndexes()
169 assert(mIndexFace.size() == mIndexBack.size());
172 std::vector<bool> vec;
173 size_t count = mIndexFace.size();
176 for (
size_t pos = 0; pos < count; ++pos)
177 vec.push_back(
false);
179 for (
size_t pos = 0; pos < count; ++pos)
182 size_t index = mIndexBack[pos];
184 throw new std::exception();
187 index = mIndexFace[pos];
189 throw new std::exception();
192 throw new std::exception();
196 for (
size_t pos = 0; pos < count; ++pos)
199 throw new std::exception();
203 for (
size_t pos = 0; pos < count; ++pos)
205 size_t index = mIndexFace[pos];
206 if (mIndexBack[index] != pos)
207 throw new std::exception();
size_t removeItemAt(size_t _index)
size_t convertToFace(size_t _index) const
void swapItemsBackAt(size_t _index1, size_t _index2)
size_t insertItemAt(size_t _index)
size_t getIndexCount() const
#define MYGUI_ASSERT_RANGE_AND_NONE(index, size, owner)
#define MYGUI_ASSERT_RANGE(index, size, owner)
void swapItemsFaceAt(size_t _index1, size_t _index2)
size_t convertToBack(size_t _index) const
#define MYGUI_ASSERT_RANGE_INSERT(index, size, owner)