bool ThreadSearchThread::AddNewItem(wxSortedArrayString& sortedArrayString, const wxString& newItem, const wxArrayString& mask) { // Adds item to array only if it does not exist bool added = false; if ( sortedArrayString.Index(newItem.c_str()) == wxNOT_FOUND ) { // Looks if current file matches one of the file patterns size_t maskCount = mask.GetCount(); if (maskCount == 0) { sortedArrayString.Add(newItem); added = true; } else { for (size_t i = 0; i < maskCount; ++i) { if ( newItem.Matches(mask[i].c_str() ) ) { sortedArrayString.Add(newItem); added = true; break; } } } } return added; }
static void LoadLadspaEffect(wxSortedArrayString &uniq, wxString fname, DL_Array &dls) { wxLogNull logNo; LADSPA_Descriptor_Function mainFn = NULL; // Since we now have builtin VST support, ignore the VST bridge as it // causes duplicate menu entries to appear. wxFileName f(fname); if (f.GetName().CmpNoCase(wxT("vst-bridge")) == 0) { return; } // As a courtesy to some plug-ins that might be bridges to // open other plug-ins, we set the current working // directory to be the plug-in's directory. wxString saveOldCWD = ::wxGetCwd(); wxString prefix = ::wxPathOnly(fname); ::wxSetWorkingDirectory(prefix); wxDynamicLibrary* pDLL = new wxDynamicLibrary(); dls.push_back(pDLL); if (pDLL && pDLL->Load(fname, wxDL_LAZY)) { mainFn = (LADSPA_Descriptor_Function)(pDLL->GetSymbol(wxT(descriptorFnName))); } if (mainFn) { int index = 0; const LADSPA_Descriptor *data; data = mainFn(index); while(data) { wxString uniqid = wxString::Format(wxT("%08x-%s"), data->UniqueID, LAT1CTOWX(data->Label).c_str()); if (uniq.Index(uniqid) == wxNOT_FOUND) { uniq.Add(uniqid); std::set<wxString> categories; #if defined(USE_LIBLRDF) && defined(EFFECT_CATEGORIES) std::multimap<unsigned long, wxString>::const_iterator iter; iter = gPluginCategories.lower_bound(data->UniqueID); for ( ; (iter != gPluginCategories.end() && iter->first == data->UniqueID); ++iter) categories.insert(iter->second); #endif LadspaEffect *effect = new LadspaEffect(data, categories); EffectManager::Get().RegisterEffect(effect); } // Get next plugin index++; data = mainFn(index); } } ::wxSetWorkingDirectory(saveOldCWD); }
void MFolderCache::Add(MFolder *folder) { Check(); // the caller should verify that it's not already in the cache ASSERT_MSG( ms_aFolders.Index(folder) == wxNOT_FOUND, _T("can't add the folder to the cache - it's already there") ); size_t index = ms_aFolderNames.Add(folder->GetFullName()); ms_aFolders.Insert(folder, index); }
void CDVRPTRClientApp::getRpt2Calls(wxString& call, wxSortedArrayString& list) const { wxConfigBase* profile = new wxConfig(APPLICATION_NAME); wxASSERT(profile != NULL); wxString temp; profile->Read(KEY_RPT2_CALL, &call, DEFAULT_RPT2_CALL); profile->Read(KEY_RPT2_LIST, &temp, DEFAULT_RPT2_LIST); wxLogInfo(wxT("RPT2 call set to %s"), call.c_str()); wxLogInfo(wxT("RPT2 list set to %s"), temp.c_str()); // Convert the comma delimited list to an array list.Clear(); wxStringTokenizer tokens(temp, wxT(",")); while (tokens.HasMoreTokens()) { wxString item = tokens.GetNextToken(); if (!item.IsEmpty()) list.Add(item); } delete profile; }
wxString wxLuaCheckStack::DumpTable(int stack_idx, const wxString& tablename, const wxString& msg, wxSortedArrayString& tableArray, int indent) { wxCHECK_MSG(m_luaState, wxEmptyString, wxT("Invalid lua_State")); lua_State* L = m_luaState; wxLuaState wxlState(L); wxString indentStr; wxString s; // We only do tables, return error message if (!lua_istable(L, stack_idx)) { s.Printf(wxT("wxLuaCheckStack::DumpTable(L=%p) stack idx %d is not a table.\n"), L, stack_idx); OutputMsg(s); return s; } if (indent == 0) { // First time through print header s.Printf(wxT("wxLuaCheckStack::DumpTable(L=%p) Table: '%s'\n"), L, tablename.c_str()); OutputMsg(s); } else if (indent > 10) { // Don't let things get out of hand... s.Printf(wxT("wxLuaCheckStack::DumpTable(L=%p) Table depth > 10! Truncating: '%s'\n"), L, tablename.c_str()); OutputMsg(s); return s; } else { indentStr = wxString(wxT(' '), indent*2) + wxT(">"); } wxString title = wxString::Format(wxT("%sTable Level %d : name '%s'\n"), indentStr.c_str(), indent, tablename.c_str()); s += title; OutputMsg(title); lua_pushvalue(L, stack_idx); // push the table to read the top of the stack lua_pushnil(L); while (lua_next(L, -2) != 0) { int keyType = 0, valueType = 0; wxString key, value; wxLuaDebugData::GetTypeValue(L, -2, &keyType, key); wxLuaDebugData::GetTypeValue(L, -1, &valueType, value); wxString info = wxString::Format(wxT("%s%-32s\t%-16s\t%-20s\t%-16s\n"), indentStr.c_str(), key.c_str(), wxluaT_typename(L, keyType).c_str(), value.c_str(), wxluaT_typename(L, valueType).c_str()); s += info; OutputMsg(info); if (tableArray.Index(value) == wxNOT_FOUND) { if (valueType == WXLUA_TTABLE) { tableArray.Add(value); s += DumpTable(lua_gettop(L), tablename + wxT(".") + key, msg, tableArray, indent+1); } else { tableArray.Add(value); } } lua_pop(L, 1); // pop value } lua_pop(L, 1); // pop pushed table return s; }