Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- NiExtraData* NiObjectNET::GetExtraData(const BSFixedString& key) const
- {
- if (!key.data)
- return NULL;
- UInt16 t = (UInt16)m_extraDataLen - 1; // Top
- UInt16 m = 0; // Middle
- UInt16 b = 0; // Bottom
- while (b <= t)
- {
- m = (t + b) >> 1; // Middle
- ptrdiff_t ptCompare = key.data - m_extraData[m]->m_pcName;
- if (ptCompare == 0) { // Key equal
- return m_extraData[m];
- } else if (ptCompare > 0) { // Key > middle
- b = m + 1;
- } else { // Key < middle
- t = m - 1;
- }
- }
- return NULL; // Couldn't find Extra Data for the given search key.
- }
- bool NiObjectNET::RemoveExtraData(const BSFixedString& key)
- {
- if (m_extraDataLen == 0) // No extra data
- return false;
- if (!key.data) // No key data
- return false;
- UInt16 t = (UInt16)m_extraDataLen - 1; // Top
- UInt16 m = 0; // Middle
- UInt16 b = 0; // Bottom
- while (b <= t)
- {
- m = (t + b) >> 1; // Middle
- ptrdiff_t ptCompare = key.data - m_extraData[m]->m_pcName;
- if (ptCompare == 0) { // Key equal
- DeleteExtraData(m);
- return true;
- } else if (ptCompare > 0) { // Key > middle
- b = m + 1;
- } else { // Key < middle
- t = m - 1;
- }
- }
- return false; // Key not found
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement