int TokenTree::AddToken(Token* newToken, int forceIdx) { if (!newToken) return -1; const wxString & name = newToken->m_Name; static TokenIdxSet tmpTokens = TokenIdxSet(); // Insert the token's name and the token in the (inserted?) list size_t tokenIdx = m_Tree.AddItem(name, tmpTokens); TokenIdxSet& curList = m_Tree.GetItemAtPos(tokenIdx); int newItem = AddTokenToList(newToken, forceIdx); curList.insert(newItem); size_t fIdx = newToken->m_FileIdx; m_FileMap[fIdx].insert(newItem); // Add Token (if applicable) to the namespaces indexes if (newToken->m_ParentIndex < 0) { newToken->m_ParentIndex = -1; m_GlobalNameSpaces.insert(newItem); if (newToken->m_TokenKind == tkNamespace) m_TopNameSpaces.insert(newItem); } // All done! return newItem; }
int TokensTree::AddToken(Token* newToken,int forceidx) { if(!newToken) return -1; const cc_string & name = newToken->m_Name; static TokenIdxSet tmp_tokens = TokenIdxSet(); // tmp_tokens.clear(); // Insert the token's name and the token in the (inserted?) list size_t idx2 = m_Tree.AddItem(name,tmp_tokens,false); TokenIdxSet& curlist = m_Tree.GetItemAtPos(idx2); int newitem = AddTokenToList(newToken,forceidx); curlist.insert(newitem); m_FilesMap[newToken->m_FileIdx].insert(newitem); // Add Token (if applicable) to the namespaces indexes if(newToken->m_ParentIndex < 0) { newToken->m_ParentIndex = -1; m_GlobalNameSpace.insert(newitem); if(newToken->m_TokenKind == tkNamespace) m_TopNameSpaces.insert(newitem); } // All done! return newitem; }
void TokenTree::RenameToken(Token* token, const wxString& newName) { if (!token) return; // remove the old token index from the TokenIdxSet mapped by old name. int slotNo = m_Tree.GetItemNo(token->m_Name); if (slotNo) { TokenIdxSet& curList = m_Tree.GetItemAtPos(slotNo); // Note: As we have no way to actually delete keys in the TokenSearchTree, // the previous name index path of the token will still exist, as well as its TokenIdxSet slot, // but this slot will be empty and as result will lead to nothing. // This is the same thing the RemoveToken procedure does. curList.erase(token->m_Index); }; token->m_Name = newName; static TokenIdxSet tmpTokens = TokenIdxSet(); size_t tokenIdx = m_Tree.AddItem(newName, tmpTokens); TokenIdxSet& curList = m_Tree.GetItemAtPos(tokenIdx); // add the old token index to the TokenIdxSet mapped by new name, note Token index is not changed curList.insert(token->m_Index); }