void HashTable::GrowTable(){ //double the capacity Vector v_items; EnumerateTable(v_items); delete []mp_vector_array; m_number_elements=0; m_table_size<<=1; //left shift capacity by 1 mp_vector_array=new Vector[m_table_size]; int len=v_items.Size(); bool b_sort=mb_sorted; //remember whether or not it was sorted mb_sorted=false; //turn sorting off to make the adds much faster for(int i=0;i<len;i++){ Add((HashObject*)v_items.Get(i)); } if(b_sort){ SortTable(); } }
bool wxLuaDebugTarget::HandleDebuggerCmd(int debugCommand) { bool ret = false; switch ((int)debugCommand) { case wxLUASOCKET_DEBUGGER_CMD_NONE : { // This is an error, but maybe we can continue? ret = true; break; } case wxLUASOCKET_DEBUGGER_CMD_ADD_BREAKPOINT: { wxString fileName; wxInt32 lineNumber = 0; if (m_clientSocket.ReadString(fileName) && m_clientSocket.ReadInt32(lineNumber)) { ret = AddBreakPoint(fileName, lineNumber); } break; } case wxLUASOCKET_DEBUGGER_CMD_REMOVE_BREAKPOINT: { wxString fileName; wxInt32 lineNumber = 0; if (m_clientSocket.ReadString(fileName) && m_clientSocket.ReadInt32(lineNumber)) { ret = RemoveBreakPoint(fileName, lineNumber); } break; } case wxLUASOCKET_DEBUGGER_CMD_CLEAR_ALL_BREAKPOINTS: { ret = ClearAllBreakPoints(); break; } case wxLUASOCKET_DEBUGGER_CMD_RUN_BUFFER: { wxString fileName; wxString buffer; if (m_clientSocket.ReadString(fileName) && m_clientSocket.ReadString(buffer)) { ret = Run(fileName, buffer); } break; } case wxLUASOCKET_DEBUGGER_CMD_DEBUG_STEP: { ret = Step(); break; } case wxLUASOCKET_DEBUGGER_CMD_DEBUG_STEPOVER: { ret = StepOver(); break; } case wxLUASOCKET_DEBUGGER_CMD_DEBUG_STEPOUT: { ret = StepOut(); break; } case wxLUASOCKET_DEBUGGER_CMD_DEBUG_CONTINUE: { m_forceBreak = false; ret = Continue(); break; } case wxLUASOCKET_DEBUGGER_CMD_DEBUG_BREAK: { ret = Break(); break; } case wxLUASOCKET_DEBUGGER_CMD_ENUMERATE_STACK: { ret = EnumerateStack(); break; } case wxLUASOCKET_DEBUGGER_CMD_ENUMERATE_STACK_ENTRY: { wxInt32 stackRef = 0; if (m_clientSocket.ReadInt32(stackRef)) ret = EnumerateStackEntry(stackRef); break; } case wxLUASOCKET_DEBUGGER_CMD_ENUMERATE_TABLE_REF: { wxInt32 tableRef = 0; wxInt32 index = 0; long itemNode = 0; if (m_clientSocket.ReadInt32(tableRef) && m_clientSocket.ReadInt32(index) && m_clientSocket.ReadLong(itemNode)) { ret = EnumerateTable(tableRef, index, itemNode); } break; } case wxLUASOCKET_DEBUGGER_CMD_RESET: { ret = Reset(); break; } case wxLUASOCKET_DEBUGGER_CMD_EVALUATE_EXPR: { wxInt32 exprRef = 0; wxString buffer; if (m_clientSocket.ReadInt32(exprRef) && m_clientSocket.ReadString(buffer)) { ret = EvaluateExpr(exprRef, buffer); } break; } case wxLUASOCKET_DEBUGGER_CMD_CLEAR_DEBUG_REFERENCES: { size_t idx, idxMax = m_references.GetCount(); for (idx = 0; idx < idxMax; ++idx) { int iItem = m_references.Item(idx); m_wxlState.wxluaR_Unref(iItem, &wxlua_lreg_debug_refs_key); } m_references.Clear(); ret = true; break; } case wxLUASOCKET_DEBUGGER_CMD_DISABLE_BREAKPOINT: // FIXME do something here ret = true; break; case wxLUASOCKET_DEBUGGER_CMD_ENABLE_BREAKPOINT: // FIXME do something here ret = true; break; default : wxFAIL_MSG(wxT("Invalid wxLuaSocketDebuggerCommands_Type in wxLuaDebugTarget::ThreadFunction")); } return ret; }