void insertImpl(TreeNode*& root, TreeNode* node)
			{
				if (!root) { root = node; return;}

				if (node->val < root->val) { insertImpl(root->left, node); }
				else { insertImpl(root->right, node); }
			}
Esempio n. 2
0
NameValueTable::Elm* NameValueTable::insert(const StringData* name) {
  reserve(m_elms + 1);
  Elm* elm = insertImpl(name);
  if (elm->m_tv.m_type == KindOfInvalid) {
    ++m_elms;
    name->incRefCount();
  }
  return elm;
}
Esempio n. 3
0
void NameValueTable::rehash(Elm* const oldTab, const size_t oldMask) {
  for (Elm* srcElm = &oldTab[oldMask]; srcElm != &oldTab[-1]; --srcElm) {
    if (srcElm->m_name) {
      assert(srcElm->m_tv.m_type == KindOfNamedLocal ||
             tvIsPlausible(srcElm->m_tv));
      Elm* dstElm = insertImpl(srcElm->m_name);
      dstElm->m_name = srcElm->m_name;
      dstElm->m_tv = srcElm->m_tv;
    }
  }
}
			TreeNode* insertNode(TreeNode* root, TreeNode* node) {
				insertImpl(root, node);
				return root;
			}