本文整理汇总了C++中TagEntryPtr::GetKind方法的典型用法代码示例。如果您正苦于以下问题:C++ TagEntryPtr::GetKind方法的具体用法?C++ TagEntryPtr::GetKind怎么用?C++ TagEntryPtr::GetKind使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TagEntryPtr
的用法示例。
在下文中一共展示了TagEntryPtr::GetKind方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoPopulateTags
void OpenResourceDialog::DoPopulateTags()
{
bool gotExactMatch(false);
// Next, add the tags
TagEntryPtrVector_t tags;
if(m_userFilters.IsEmpty()) return;
m_manager->GetTagsManager()->GetTagsByPartialName(m_userFilters.Item(0), tags);
for(size_t i = 0; i < tags.size(); i++) {
TagEntryPtr tag = tags.at(i);
// Filter out non relevanting entries
if(!m_filters.IsEmpty() && m_filters.Index(tag->GetKind()) == wxNOT_FOUND) continue;
if(!MatchesFilter(tag->GetName())) continue;
wxString name(tag->GetName());
// keep the fullpath
wxDataViewItem item;
wxString fullname;
if(tag->GetKind() == wxT("function") || tag->GetKind() == wxT("prototype")) {
fullname = wxString::Format(
wxT("%s::%s%s"), tag->GetScope().c_str(), tag->GetName().c_str(), tag->GetSignature().c_str());
item = DoAppendLine(tag->GetName(),
fullname,
(tag->GetKind() == wxT("function")),
new OpenResourceDialogItemData(
tag->GetFile(), tag->GetLine(), tag->GetPattern(), tag->GetName(), tag->GetScope()),
DoGetTagImg(tag));
} else {
fullname = wxString::Format(wxT("%s::%s"), tag->GetScope().c_str(), tag->GetName().c_str());
item = DoAppendLine(tag->GetName(),
fullname,
false,
new OpenResourceDialogItemData(
tag->GetFile(), tag->GetLine(), tag->GetPattern(), tag->GetName(), tag->GetScope()),
DoGetTagImg(tag));
}
if((m_userFilters.GetCount() == 1) && (m_userFilters.Item(0).CmpNoCase(name) == 0) && !gotExactMatch) {
gotExactMatch = true;
DoSelectItem(item);
}
}
}
示例2: AddSymbol
void SymbolsDialog::AddSymbol(const TagEntryPtr &tag, bool sel)
{
//-------------------------------------------------------
// Populate the columns
//-------------------------------------------------------
wxString line;
line << tag->GetLine();
long index = AppendListCtrlRow(m_results);
SetColumnText(m_results, index, 0, tag->GetFullDisplayName());
SetColumnText(m_results, index, 1, tag->GetKind());
SetColumnText(m_results, index, 2, tag->GetFile());
SetColumnText(m_results, index, 3, line);
SetColumnText(m_results, index, 4, tag->GetPattern());
// list ctrl can reorder items, so use returned index to insert tag
m_tags.insert(m_tags.begin()+index, tag);
}
示例3: OnFindSymbol
void PHPCodeCompletion::OnFindSymbol(clCodeCompletionEvent& e)
{
e.Skip();
if(PHPWorkspace::Get()->IsOpen()) {
if(!CanCodeComplete(e)) return;
e.Skip(false);
IEditor* editor = dynamic_cast<IEditor*>(e.GetEditor());
if(editor) {
wxString word = editor->GetWordAtCaret();
if(word.IsEmpty()) return;
PHPEntityBase::List_t symbols = m_lookupTable.FindSymbol(word);
if(symbols.size() == 1) {
PHPEntityBase::Ptr_t match = *symbols.begin();
DoOpenEditorForEntry(match);
} else {
// Convert the matches to clSelectSymbolDialogEntry::List_t
clSelectSymbolDialogEntry::List_t entries;
std::for_each(symbols.begin(), symbols.end(), [&](PHPEntityBase::Ptr_t entry) {
TagEntryPtr tag = DoPHPEntityToTagEntry(entry);
wxBitmap bmp = wxCodeCompletionBox::GetBitmap(tag);
clSelectSymbolDialogEntry m;
m.bmp = bmp;
m.name = entry->GetFullName();
m.clientData = new PHPFindSymbol_ClientData(entry);
m.help = tag->GetKind();
entries.push_back(m);
});
// Show selection dialog
clSelectSymbolDialog dlg(EventNotifier::Get()->TopFrame(), entries);
if(dlg.ShowModal() != wxID_OK) return;
PHPFindSymbol_ClientData* cd = dynamic_cast<PHPFindSymbol_ClientData*>(dlg.GetSelection());
if(cd) {
DoOpenEditorForEntry(cd->m_ptr);
}
}
}
}
}
示例4: DoGetTagImg
wxBitmap OpenResourceDialog::DoGetTagImg(TagEntryPtr tag)
{
wxString kind = tag->GetKind();
wxString access = tag->GetAccess();
wxBitmap bmp = m_tagImgMap[wxT("text")];
if(kind == wxT("class")) bmp = m_tagImgMap[wxT("class")];
if(kind == wxT("struct")) bmp = m_tagImgMap[wxT("struct")];
if(kind == wxT("namespace")) bmp = m_tagImgMap[wxT("namespace")];
if(kind == wxT("variable")) bmp = m_tagImgMap[wxT("member_public")];
if(kind == wxT("typedef")) bmp = m_tagImgMap[wxT("typedef")];
if(kind == wxT("member") && access.Contains(wxT("private"))) bmp = m_tagImgMap[wxT("member_private")];
if(kind == wxT("member") && access.Contains(wxT("public"))) bmp = m_tagImgMap[wxT("member_public")];
if(kind == wxT("member") && access.Contains(wxT("protected"))) bmp = m_tagImgMap[wxT("member_protected")];
if(kind == wxT("member")) bmp = m_tagImgMap[wxT("member_public")];
if((kind == wxT("function") || kind == wxT("prototype")) && access.Contains(wxT("private")))
bmp = m_tagImgMap[wxT("function_private")];
if((kind == wxT("function") || kind == wxT("prototype")) && (access.Contains(wxT("public")) || access.IsEmpty()))
bmp = m_tagImgMap[wxT("function_public")];
if((kind == wxT("function") || kind == wxT("prototype")) && access.Contains(wxT("protected")))
bmp = m_tagImgMap[wxT("function_protected")];
if(kind == wxT("macro")) bmp = m_tagImgMap[wxT("typedef")];
if(kind == wxT("enum")) bmp = m_tagImgMap[wxT("enum")];
if(kind == wxT("enumerator")) bmp = m_tagImgMap[wxT("enumerator")];
return bmp;
}
示例5: GetImageId
int wxCodeCompletionBox::GetImageId(TagEntryPtr entry)
{
wxString kind = entry->GetKind();
wxString access = entry->GetAccess();
if(kind == wxT("class")) return 0;
if(kind == wxT("struct")) return 1;
if(kind == wxT("namespace")) return 2;
if(kind == wxT("variable")) return 3;
if(kind == wxT("typedef")) return 4;
if(kind == wxT("member") && access.Contains(wxT("private"))) return 5;
if(kind == wxT("member") && access.Contains(wxT("public"))) return 6;
if(kind == wxT("member") && access.Contains(wxT("protected"))) return 7;
// member with no access? (maybe part of namespace??)
if(kind == wxT("member")) return 6;
if((kind == wxT("function") || kind == wxT("prototype")) && access.Contains(wxT("private"))) return 8;
if((kind == wxT("function") || kind == wxT("prototype")) && (access.Contains(wxT("public")) || access.IsEmpty()))
return 9;
if((kind == wxT("function") || kind == wxT("prototype")) && access.Contains(wxT("protected"))) return 10;
if(kind == wxT("macro")) return 11;
if(kind == wxT("enum")) return 12;
if(kind == wxT("enumerator")) return 13;
if(kind == wxT("cpp_keyword")) return 17;
return wxNOT_FOUND;
}
示例6: SyncSignature
TagEntryPtr RefactoringEngine::SyncSignature(const wxFileName& fn,
int line,
int pos,
const wxString &word,
const wxString &text,
const wxString &expr)
{
TagEntryPtr func = TagsManagerST::Get()->FunctionFromFileLine(fn, line);
if(!func)
return NULL;
bool bIsImpl = (func->GetKind() == wxT("function"));
// Found the counterpart
std::vector<TagEntryPtr> tags;
TagsManagerST::Get()->FindImplDecl(fn, line, expr, word, text, tags, !bIsImpl);
if(tags.size() != 1)
return NULL;
TagEntryPtr tag = tags.at(0);
if(tag->IsMethod() == false)
return NULL;
wxString signature;
if (bIsImpl) {
// The "source" is an implementaion, which means that we need to prepare declaration signature
// this could be tricky since we might lose the "default" values
signature = TagsManagerST::Get()->NormalizeFunctionSig(func->GetSignature(), Normalize_Func_Default_value|Normalize_Func_Name|Normalize_Func_Reverse_Macro);
} else {
// Prepare an "implementation" signature
signature = TagsManagerST::Get()->NormalizeFunctionSig(func->GetSignature(), Normalize_Func_Name|Normalize_Func_Reverse_Macro);
}
tag->SetSignature(signature);
return tag;
}
示例7: DoPopulateTags
void OpenResourceDialog::DoPopulateTags()
{
if (m_tags.empty())
return;
bool gotExactMatch(false);
wxArrayString tmpArr;
wxString curSel = m_textCtrlResourceName->GetValue();
wxString curSelNoStar;
if (!curSel.Trim().Trim(false).IsEmpty()) {
curSel = curSel.MakeLower().Trim().Trim(false);
curSelNoStar = curSel.c_str();
for (size_t i=0; i<m_tags.size(); i++) {
TagEntryPtr tag = m_tags.at(i);
wxString name(tag->GetName());
name.MakeLower();
//append wildcard at the end
if (!curSel.EndsWith(wxT("*"))) {
curSel << wxT("*");
}
// FR# [2008133]
if (m_checkBoxUsePartialMatching->IsChecked() && !curSel.StartsWith(wxT("*"))) {
curSel.Prepend(wxT("*"));
}
if (wxMatchWild(curSel, name)) {
// keep the fullpath
int index(0);
if(tag->GetKind() == wxT("function") || tag->GetKind() == wxT("prototype"))
index = DoAppendLine(tag->GetName(),
tag->GetSignature(),
tag->GetScope(),
tag->GetKind() == wxT("function"),
new OpenResourceDialogItemData(tag->GetFile(), tag->GetLine(), tag->GetPattern(), m_type, tag->GetName(), tag->GetScope()));
else
index = DoAppendLine(tag->GetName(),
tag->GetScope(),
wxT(""),
false,
new OpenResourceDialogItemData(tag->GetFile(), tag->GetLine(), tag->GetPattern(), m_type, tag->GetName(), tag->GetScope()));
if (curSelNoStar == name && !gotExactMatch) {
gotExactMatch = true;
DoSelectItem(index);
}
}
}
}
if (m_listOptions->GetItemCount() == 150) {
m_staticTextErrorMessage->SetLabel(wxT("Too many matches, please narrow down your search"));
}
if (!gotExactMatch && m_listOptions->GetItemCount()) {
DoSelectItem(0);
}
}
示例8: DoResolveWord
bool RefactoringEngine::DoResolveWord(TextStatesPtr states, const wxFileName& fn, int pos, int line, const wxString &word, RefactorSource *rs)
{
std::vector<TagEntryPtr> tags;
// try to process the current expression
wxString expr = GetExpression(pos, states);
// sanity
if(states->text.length() < (size_t)pos + 1)
return false;
// get the scope
// Optimize the text for large files
wxString text(states->text.substr(0, pos + 1));
// we simply collect declarations & implementations
//try implemetation first
bool found(false);
TagsManagerST::Get()->FindImplDecl(fn, line, expr, word, text, tags, true, true);
if (tags.empty() == false) {
// try to see if we got a function and not class/struct
for (size_t i=0; i<tags.size(); i++) {
TagEntryPtr tag = tags.at(i);
// find first non class/struct tag
if (tag->GetKind() != wxT("class") && tag->GetKind() != wxT("struct")) {
// if there is no match, add it anyways
if (!found) {
rs->isClass = (tag->GetKind() == wxT("class") ||tag->GetKind() == wxT("struct"));
rs->name = tag->GetName();
rs->scope = tag->GetScope();
found = true;
} else if (rs->scope == wxT("<global>") && rs->isClass == false) {
// give predecense to <global> variables
rs->isClass = (tag->GetKind() == wxT("class") ||tag->GetKind() == wxT("struct"));
rs->name = tag->GetName();
rs->scope = tag->GetScope();
found = true;
}
found = true;
}
}
// if no match was found, keep the first result but keep searching
if ( !found ) {
TagEntryPtr tag = tags.at(0);
rs->scope = tag->GetScope();
rs->name = tag->GetName();
rs->isClass = tag->IsClass() || tag->IsStruct();
found = true;
} else {
return true;
}
}
// Ok, the "implementation" search did not yield definite results, try declaration
tags.clear();
TagsManagerST::Get()->FindImplDecl(fn, line, expr, word, text, tags, false, true);
if (tags.empty() == false) {
// try to see if we got a function and not class/struct
for (size_t i=0; i<tags.size(); i++) {
TagEntryPtr tag = tags.at(i);
// find first non class/struct tag
if (tag->GetKind() != wxT("class") && tag->GetKind() != wxT("struct")) {
rs->name = tag->GetName();
rs->scope = tag->GetScope();
return true;
}
}
// if no match was found, keep the first result but keep searching
if ( !found ) {
TagEntryPtr tag = tags.at(0);
rs->scope = tag->GetScope();
rs->name = tag->GetName();
rs->isClass = tag->IsClass() || tag->IsStruct();
}
return true;
}
// if we got so far, CC failed to parse the expression
return false;
}