本文整理汇总了C++中SearchData类的典型用法代码示例。如果您正苦于以下问题:C++ SearchData类的具体用法?C++ SearchData怎么用?C++ SearchData使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了SearchData类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: wxUnusedVar
void FindResultsTab::OnRepeatOutput(wxCommandEvent& e)
{
wxUnusedVar(e);
SearchData* searchData = GetSearchData();
searchData->UseNewTab(false);
SearchThreadST::Get()->PerformSearch(*searchData);
}
示例2: DoGetSearchData
void FindInFilesDialog::DoSearchReplace()
{
SearchData data = DoGetSearchData();
data.SetOwner(clMainFrame::Get()->GetOutputPane()->GetReplaceResultsTab());
DoSaveOpenFiles();
SearchThreadST::Get()->PerformSearch(data);
Close();
}
示例3: wxDELETE
void FindResultsTab::OnSearchMatch(wxCommandEvent& e)
{
SearchResultList* res = (SearchResultList*)e.GetClientData();
if(!res) return;
int m = m_book ? m_book->GetPageIndex(m_recv) : 0;
if(m == wxNOT_FOUND) {
wxDELETE(res);
return;
}
MatchInfo& matchInfo = GetMatchInfo(m);
for(SearchResultList::iterator iter = res->begin(); iter != res->end(); iter++) {
if(matchInfo.empty() || matchInfo.rbegin()->second.GetFileName() != iter->GetFileName()) {
if(!matchInfo.empty()) {
AppendText("\n");
}
wxFileName fn(iter->GetFileName());
fn.MakeRelativeTo();
AppendText(fn.GetFullPath() + wxT("\n"));
}
int lineno = m_recv->GetLineCount() - 1;
matchInfo.insert(std::make_pair(lineno, *iter));
wxString text = iter->GetPattern();
int delta = -text.Length();
text.Trim(false);
delta += text.Length();
text.Trim();
wxString linenum;
if(iter->GetMatchState() == CppWordScanner::STATE_CPP_COMMENT ||
iter->GetMatchState() == CppWordScanner::STATE_C_COMMENT)
linenum = wxString::Format(wxT(" %5u //"), iter->GetLineNumber());
else
linenum = wxString::Format(wxT(" %5u "), iter->GetLineNumber());
SearchData* d = GetSearchData(m_recv);
// Print the scope name
if(d->GetDisplayScope()) {
TagEntryPtr tag = TagsManagerST::Get()->FunctionFromFileLine(iter->GetFileName(), iter->GetLineNumber());
wxString scopeName(wxT("global"));
if(tag) {
scopeName = tag->GetPath();
}
linenum << wxT("[ ") << scopeName << wxT(" ] ");
iter->SetScope(scopeName);
}
delta += linenum.Length();
AppendText(linenum + text + wxT("\n"));
m_recv->IndicatorFillRange(m_sci->PositionFromLine(lineno) + iter->GetColumn() + delta, iter->GetLen());
}
wxDELETE(res);
}
示例4: OnSearchStart
void ReplaceInFilesPanel::OnSearchStart(wxCommandEvent& e)
{
e.Skip();
// set the "Replace With" field with the user value
SearchData* data = (SearchData*)e.GetClientData();
m_replaceWith->ChangeValue(data->GetReplaceWith());
//
FindResultsTab::OnSearchStart(e);
}
示例5: SearchSummary
void SearchThread::ProcessRequest(ThreadRequest *req)
{
wxStopWatch sw;
m_summary = SearchSummary();
DoSearchFiles(req);
m_summary.SetElapsedTime(sw.Time());
SearchData *sd = (SearchData*)req;
// Send search end event
SendEvent(wxEVT_SEARCH_THREAD_SEARCHEND, sd->GetOwner());
}
示例6: doSearch
void SearchOperation::doSearch( SearchData& searchData, qint64 initialLine )
{
const qint64 nbSourceLines = sourceLogData_->getNbLine();
int maxLength = 0;
int nbMatches = searchData.getNbMatches();
SearchResultArray currentList = SearchResultArray();
// Ensure no re-alloc will be done
currentList.reserve( nbLinesInChunk );
LOG(logDEBUG) << "Searching from line " << initialLine << " to " << nbSourceLines;
if (initialLine < startLine_) {
initialLine = startLine_;
}
const qint64 endLine = qMin(nbSourceLines, endLine_);
for ( qint64 i = initialLine; i < endLine; i += nbLinesInChunk ) {
if ( *interruptRequested_ )
break;
const int percentage = ( i - initialLine ) * 100 / ( endLine - initialLine );
emit searchProgressed( nbMatches, percentage );
const QStringList lines = sourceLogData_->getLines( i,
qMin( nbLinesInChunk, (int) ( endLine - i ) ) );
LOG(logDEBUG) << "Chunk starting at " << i <<
", " << lines.size() << " lines read.";
int j = 0;
for ( ; j < lines.size(); j++ ) {
if ( regexp_.match( lines[j] ).hasMatch() ) {
// FIXME: increase perf by removing temporary
const int length = sourceLogData_->getExpandedLineString(i+j).length();
if ( length > maxLength )
maxLength = length;
currentList.push_back( MatchingLine( i+j ) );
nbMatches++;
}
}
// After each block, copy the data to shared data
// and update the client
searchData.addAll( maxLength, currentList, i+j );
currentList.clear();
}
emit searchProgressed( nbMatches, 100 );
}
示例7: start
// Called in the worker thread's context
void FullSearchOperation::start( SearchData& searchData )
{
// Clear the shared data
searchData.clear();
doSearch( searchData, 0 );
}
示例8: AppendText
void FindResultsTab::OnSearchMatch(wxCommandEvent& e)
{
SearchResultList* res = (SearchResultList*)e.GetClientData();
if(!res) return;
SearchResultList::iterator iter = res->begin();
for(; iter != res->end(); ++iter) {
if(m_matchInfo.empty() || m_matchInfo.rbegin()->second.GetFileName() != iter->GetFileName()) {
if(!m_matchInfo.empty()) {
AppendText("\n");
}
wxFileName fn(iter->GetFileName());
fn.MakeRelativeTo();
AppendText(fn.GetFullPath() + wxT("\n"));
}
int lineno = m_sci->GetLineCount() - 1;
m_matchInfo.insert(std::make_pair(lineno, *iter));
wxString text = iter->GetPattern();
// int delta = -text.Length();
// text.Trim(false);
// delta += text.Length();
// text.Trim();
wxString linenum = wxString::Format(wxT(" %5u: "), iter->GetLineNumber());
SearchData* d = GetSearchData();
// Print the scope name
if(d->GetDisplayScope()) {
TagEntryPtr tag = TagsManagerST::Get()->FunctionFromFileLine(iter->GetFileName(), iter->GetLineNumber());
wxString scopeName(wxT("global"));
if(tag) {
scopeName = tag->GetPath();
}
linenum << wxT("[ ") << scopeName << wxT(" ] ");
iter->SetScope(scopeName);
}
AppendText(linenum + text + wxT("\n"));
int indicatorStartPos = m_sci->PositionFromLine(lineno) + iter->GetColumn() + linenum.Length();
int indicatorLen = iter->GetLen();
m_indicators.push_back(indicatorStartPos);
m_sci->IndicatorFillRange(indicatorStartPos, indicatorLen);
}
wxDELETE(res);
}
示例9: wxUnusedVar
void FindResultsTab::OnRepeatOutput(wxCommandEvent& e)
{
wxUnusedVar(e);
if(m_book) {
int sel = m_book->GetSelection();
if(sel != wxNOT_FOUND) {
// get the search data used to generate the output on the selected tab
wxWindow* tab = m_book->GetPage(sel);
if(tab) {
SearchData* searchData = (SearchData*)tab->GetClientData();
searchData->UseNewTab(false);
SearchThreadST::Get()->PerformSearch(*searchData);
}
}
}
}
示例10: Clear
void FindResultsTab::OnSearchStart(wxCommandEvent& e)
{
m_searchInProgress = true;
Clear();
SetStyles(m_sci);
SearchData* data = (SearchData*)e.GetClientData();
if(data) {
m_searchData = *data;
wxString message;
message << _("====== Searching for: '") << data->GetFindString() << _("'; Match case: ")
<< (data->IsMatchCase() ? _("true") : _("false")) << _(" ; Match whole word: ")
<< (data->IsMatchWholeWord() ? _("true") : _("false")) << _(" ; Regular expression: ")
<< (data->IsRegularExpression() ? _("true") : _("false")) << wxT(" ======\n");
AppendText(message);
}
wxDELETE(data);
}
示例11: wxT
void FindResultsTab::OnSearchStart(wxCommandEvent& e)
{
m_searchInProgress = true;
SearchData* data = (SearchData*)e.GetClientData();
wxString label = data ? data->GetFindString() : wxT("");
if(e.GetInt() != 0 || m_sci == NULL) {
if(m_book) {
clWindowUpdateLocker locker(this);
MySTC* sci = new MySTC(m_book);
SetStyles(sci);
sci->Connect(wxEVT_STC_STYLENEEDED, wxStyledTextEventHandler(FindResultsTab::OnStyleNeeded), NULL, this);
m_book->AddPage(sci, label, true);
#ifdef __WXMAC__
m_book->GetSizer()->Layout();
#endif
size_t where = m_book->GetPageCount() - 1;
// keep the search data used for this tab
wxWindow* tab = m_book->GetPage(where);
if(tab) {
tab->SetClientData(data);
}
m_matchInfo.push_back(MatchInfo());
m_sci = sci;
}
} else if(m_book) {
// using current tab, update the tab title and the search data
int where = m_book->GetPageIndex(m_sci);
if(where != wxNOT_FOUND) {
m_book->SetPageText(where, label);
// delete the old search data
wxWindow* tab = m_book->GetPage(where);
SearchData* oldData = (SearchData*)tab->GetClientData();
if(oldData) {
delete oldData;
}
// set the new search data
tab->SetClientData(data);
}
}
// This is needed in >=wxGTK-2.9, otherwise the 'Search' pane doesn't fully expand
SendSizeEvent(wxSEND_EVENT_POST);
m_recv = m_sci;
Clear();
if(data) {
m_searchData = *data;
wxString message;
message << _("====== Searching for: '") << data->GetFindString() << _("'; Match case: ")
<< (data->IsMatchCase() ? _("true") : _("false")) << _(" ; Match whole word: ")
<< (data->IsMatchWholeWord() ? _("true") : _("false")) << _(" ; Regular expression: ")
<< (data->IsRegularExpression() ? _("true") : _("false")) << wxT(" ======\n");
AppendText(message);
}
}
示例12: DoGetSearchData
SearchData TaskPanel::DoGetSearchData()
{
SearchData data;
data.SetDisplayScope(true);
data.SetRegularExpression(true);
data.SetMatchCase(false);
data.SetMatchWholeWord(false);
data.SetEncoding(m_choiceEncoding->GetStringSelection());
data.SetOwner(this);
wxString sfind;
// Load all info from disk
TasksPanelData d;
EditorConfigST::Get()->ReadObject(wxT("TasksPanelData"), &d);
wxStringMap_t::const_iterator iter = d.GetTasks().begin();
for(; iter != d.GetTasks().end(); iter++) {
wxString name = iter->first;
wxString regex = iter->second;
bool enabled = (d.GetEnabledItems().Index(iter->first) != wxNOT_FOUND);
regex.Trim().Trim(false);
wxRegEx re(regex);
if(enabled && !regex.IsEmpty() && re.IsValid()) sfind << wxT("(") << regex << wxT(")|");
}
if(sfind.empty() == false) sfind.RemoveLast();
data.SetFindString(sfind);
wxString rootDir = clWorkspaceManager::Get().GetWorkspace()->GetFileName().GetPath();
wxArrayString rootDirs;
rootDirs.push_back(rootDir);
data.SetRootDirs(rootDirs);
data.SetExtensions(wxT("*.*"));
return data;
}
示例13: StopSearch
void SearchThread::DoSearchFiles(ThreadRequest *req)
{
SearchData *data = static_cast<SearchData*>(req);
// Get all files
if ( data->GetRootDirs().IsEmpty() )
return;
if ( data->GetFindString().IsEmpty() )
return;
StopSearch(false);
wxArrayString fileList;
GetFiles(data, fileList);
wxStopWatch sw;
// Send startup message to main thread
if ( m_notifiedWindow || data->GetOwner() ) {
wxCommandEvent event(wxEVT_SEARCH_THREAD_SEARCHSTARTED, GetId());
event.SetClientData(new SearchData(*data));
//set the rquested output tab
event.SetInt(data->UseNewTab() ? 1 : 0);
if (data->GetOwner()) {
::wxPostEvent(data->GetOwner(), event);
} else {
// since we are in if ( m_notifiedWindow || data->GetOwner() ) block...
::wxPostEvent(m_notifiedWindow, event);
}
}
for (size_t i=0; i<fileList.Count(); i++) {
m_summary.SetNumFileScanned((int)i+1);
// give user chance to cancel the search ...
if ( TestStopSearch() ) {
// Send cancel event
SendEvent(wxEVT_SEARCH_THREAD_SEARCHCANCELED, data->GetOwner());
StopSearch(false);
break;
}
DoSearchFile(fileList.Item(i), data);
}
}
示例14: fprintf
/*code implements Greedy search*/
bool Design::greedy(int dest){
#if DEBUG==3
fprintf(debugfile_,"GREEDY");
fprintf(debugfile_,"dest: %d\n",dest);
fflush(debugfile_);
#endif
MinHeap<SearchData> openlist;
CloseStructure* closelist=new CloseStructure[map_.numvert()];
bool rc=false;
Node<EdgeInfo>* currconnect;
int nn;
SearchData curr;
SearchData tmp;
curr.set(whichbox_,-1,0); //start at current node, parent is -1.
//uniform cost so cost incurred so far is 0
bool done=false;
bool found=false;
float biggestcost=0;
int numclosed=0;
do{
#if DEBUG==3
fprintf(debugfile_,"curr.nodenum: %d\n",curr.nodenum());
fflush(debugfile_);
#endif
LList<EdgeInfo>& edgelist=map_.edges(curr.nodenum()); //get the conections to curr
while(currconnect=edgelist.curr()){ //for each node connected to curr
nn=currconnect->data().to();
if(!closelist[nn].closed_){ //if its not in the closed list
#if DEBUG==3
fprintf(debugfile_,"add to openlist: %d\n",nn);
fflush(debugfile_);
#endif
tmp.set(nn,curr.nodenum(),timeleft(currconnect,dest));
openlist.insert(tmp);
}
edgelist.gonext();
}//while
closelist[curr.nodenum()].closed_=true; //add it to the close list
closelist[curr.nodenum()].nodeinf_=curr;
numclosed++;
if(!openlist.isempty()){ //if there are still nodes to consider
curr=openlist.remove();//remove lowest cost item from list
#if DEBUG == 3
fprintf(debugfile_,"removed from openlist: %d\n",curr.nodenum());
fflush(debugfile_);
#endif
while(!openlist.isempty() && closelist[curr.nodenum()].closed_){ //if already encountered
curr=openlist.remove();//remove lowest cost item from list //consider the next node
}
if(closelist[curr.nodenum()].closed_){
//only way to reach this part of code is if the open list is empty and
//we have not found the next node to examine
done=true;
}
else{
if(curr.nodenum()==dest){
found=true; //found a node to the destination... question is, is it the best.
biggestcost=curr.cost();
}
if(found && curr.cost() > biggestcost){
done=true;
}
}//else still have node
}//if list is not empty
else{
done=true;
}//open list is empty
}while(!done);
if(found){
rc=true;
setPath(closelist,dest);
delete [] closelist;
}
return rc;
}
示例15:
bool operator<(const SearchData& left, const SearchData& right){
bool rc=false;
if(left.cost() < right.cost())
rc=true;
return rc;
}