本文整理汇总了C++中phpentitybase::Ptr_t::GetDocComment方法的典型用法代码示例。如果您正苦于以下问题:C++ Ptr_t::GetDocComment方法的具体用法?C++ Ptr_t::GetDocComment怎么用?C++ Ptr_t::GetDocComment使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类phpentitybase::Ptr_t
的用法示例。
在下文中一共展示了Ptr_t::GetDocComment方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: OnEntity
void PHPDocVisitor::OnEntity(PHPEntityBase::Ptr_t entity)
{
// Locate a comment for this entity
entity->SetFilename(m_sourceFile.GetFilename());
if(!entity->GetDocComment().IsEmpty()) {
// PHPDoc was already assigned to this entity during the parsing phase
if(entity->Is(kEntityTypeClass)) {
// Process @property tags here
PHPDocComment docComment(m_sourceFile, entity->GetDocComment());
if(!docComment.GetProperties().empty()) {
// Got some @properties
std::for_each(docComment.GetProperties().begin(), docComment.GetProperties().end(),
[&](PHPDocComment::Property::Map_t::value_type& p) {
PHPEntityBase::Ptr_t child = entity->FindChild(p.second.name);
if(!child) {
// No child of this type, create a new property and add it
child.Reset(new PHPEntityVariable());
child->SetFilename(m_sourceFile.GetFilename());
child->SetLine(entity->GetLine());
child->Cast<PHPEntityVariable>()->SetTypeHint(p.second.type);
child->Cast<PHPEntityVariable>()->SetFlag(kVar_Member); // Member variable
child->Cast<PHPEntityVariable>()->SetFlag(kVar_Public); // Public access
child->SetShortName(p.second.name);
child->SetFullName(p.second.name);
entity->AddChild(child);
}
});
} else if(!docComment.GetMethods().empty()) {
std::for_each(docComment.GetMethods().begin(), docComment.GetMethods().end(),
[&](PHPEntityBase::Ptr_t method) { entity->AddChild(method); });
}
}
} else {
// search for the comment placed at the top of the variable
// this is why we use here -1
int lineNum = (entity->GetLine() - 1);
// for debugging purposes
wxString entityName = entity->GetShortName();
wxUnusedVar(entityName);
std::map<int, phpLexerToken>::iterator iter = m_comments.find(lineNum);
if(iter == m_comments.end()) {
// try to locate a comment on the same line
++lineNum;
iter = m_comments.find(lineNum);
}
if(iter != m_comments.end()) {
// we got a match
entity->SetDocComment(iter->second.Text());
m_comments.erase(iter);
PHPDocComment docComment(m_sourceFile, entity->GetDocComment());
if(entity->Is(kEntityTypeFunction) && !docComment.GetReturn().IsEmpty()) {
entity->Cast<PHPEntityFunction>()->SetReturnValue(docComment.GetReturn());
} else if(entity->Is(kEntityTypeVariable) && !entity->Cast<PHPEntityVariable>()->IsFunctionArg()) {
// A global variable, const or a member
entity->Cast<PHPEntityVariable>()->SetTypeHint(docComment.GetVar());
}
} else if(entity->Is(kEntityTypeVariable) && entity->Parent() && entity->Parent()->Is(kEntityTypeFunction) &&
entity->Cast<PHPEntityVariable>()->IsFunctionArg()) {
// A function argument
PHPDocComment docComment(m_sourceFile, entity->Parent()->GetDocComment());
wxString typeHint = docComment.GetParam(entity->GetFullName());
if(!typeHint.IsEmpty()) {
entity->Cast<PHPEntityVariable>()->SetTypeHint(typeHint);
}
}
}
}
示例2: DoPHPEntityToTagEntry
TagEntryPtr PHPCodeCompletion::DoPHPEntityToTagEntry(PHPEntityBase::Ptr_t entry)
{
TagEntryPtr t(new TagEntry());
// wxString name = entry->Is(kEntityTypeNamespace) ? entry->GetFullName() : entry->GetShortName();
wxString name = entry->GetShortName();
if(entry->Is(kEntityTypeVariable) && entry->Cast<PHPEntityVariable>()->IsMember() && name.StartsWith(wxT("$")) &&
!entry->Cast<PHPEntityVariable>()->IsStatic()) {
name.Remove(0, 1);
} else if((entry->Is(kEntityTypeClass) || entry->Is(kEntityTypeNamespace)) && name.StartsWith("\\")) {
name.Remove(0, 1);
}
t->SetName(name);
t->SetParent(entry->Parent() ? entry->Parent()->GetFullName() : "");
t->SetPattern(t->GetName());
// Set the document comment
wxString comment, docComment;
docComment = entry->GetDocComment();
if(docComment.IsEmpty() == false) {
docComment.Trim().Trim(false); // The Doc comment
comment << docComment << wxT("\n<hr>"); // HLine
}
wxFileName fn(entry->GetFilename());
fn.MakeRelativeTo(PHPWorkspace::Get()->GetFilename().GetPath());
comment << fn.GetFullName() << wxT(" : ") << entry->GetLine();
t->SetComment(comment);
// Access
if(entry->Is(kEntityTypeVariable)) {
PHPEntityVariable* var = entry->Cast<PHPEntityVariable>();
// visibility
if(var->IsPrivate())
t->SetAccess(wxT("private"));
else if(var->IsProtected())
t->SetAccess(wxT("protected"));
else
t->SetAccess(wxT("public"));
// type (affects icon)
if(var->IsConst() || var->IsDefine()) {
t->SetKind("macro");
} else {
t->SetKind("variable");
}
t->SetReturnValue("");
} else if(entry->Is(kEntityTypeFunction) || entry->Is(kEntityTypeFunctionAlias)) {
PHPEntityFunction* func = NULL;
if(entry->Is(kEntityTypeFunctionAlias)) {
func = entry->Cast<PHPEntityFunctionAlias>()->GetFunc()->Cast<PHPEntityFunction>();
} else {
func = entry->Cast<PHPEntityFunction>();
}
if(func->HasFlag(kFunc_Private)) {
t->SetAccess(wxT("private"));
} else if(func->HasFlag(kFunc_Protected)) {
t->SetAccess("protected");
} else {
t->SetAccess(wxT("public"));
}
t->SetSignature(func->GetSignature());
t->SetPattern(func->GetShortName() + func->GetSignature());
t->SetKind("function");
} else if(entry->Is(kEntityTypeClass)) {
t->SetAccess(wxT("public"));
t->SetKind("class");
} else if(entry->Is(kEntityTypeNamespace)) {
t->SetAccess("public");
t->SetKind("namespace");
} else if(entry->Is(kEntityTypeKeyword)) {
t->SetAccess("public");
t->SetKind("cpp_keyword");
}
t->SetFlags(TagEntry::Tag_No_Signature_Format);
return t;
}
示例3: DoPHPEntityToTagEntry
TagEntryPtr PHPCodeCompletion::DoPHPEntityToTagEntry(PHPEntityBase::Ptr_t entry)
{
TagEntryPtr t(new TagEntry());
// wxString name = entry->Is(kEntityTypeNamespace) ? entry->GetFullName() : entry->GetShortName();
wxString name = entry->GetShortName();
if(entry->Is(kEntityTypeVariable) && entry->Cast<PHPEntityVariable>()->IsMember() && name.StartsWith(wxT("$")) &&
!entry->Cast<PHPEntityVariable>()->IsStatic()) {
name.Remove(0, 1);
} else if((entry->Is(kEntityTypeClass) || entry->Is(kEntityTypeNamespace)) && name.StartsWith("\\")) {
name.Remove(0, 1);
}
t->SetName(name);
t->SetParent(entry->Parent() ? entry->Parent()->GetFullName() : "");
t->SetPattern(t->GetName());
t->SetComment(entry->GetDocComment());
// Access
if(entry->Is(kEntityTypeVariable)) {
PHPEntityVariable* var = entry->Cast<PHPEntityVariable>();
// visibility
if(var->IsPrivate())
t->SetAccess(wxT("private"));
else if(var->IsProtected())
t->SetAccess(wxT("protected"));
else
t->SetAccess(wxT("public"));
// type (affects icon)
if(var->IsConst() || var->IsDefine()) {
t->SetKind("macro");
} else {
t->SetKind("variable");
}
t->SetReturnValue("");
} else if(entry->Is(kEntityTypeFunction)) {
PHPEntityFunction* func = entry->Cast<PHPEntityFunction>();
if(func->HasFlag(kFunc_Private)) {
t->SetAccess(wxT("private"));
} else if(func->HasFlag(kFunc_Protected)) {
t->SetAccess("protected");
} else {
t->SetAccess(wxT("public"));
}
t->SetSignature(func->GetSignature());
t->SetPattern(func->GetShortName() + func->GetSignature());
t->SetKind("function");
} else if(entry->Is(kEntityTypeClass)) {
t->SetAccess(wxT("public"));
t->SetKind("class");
} else if(entry->Is(kEntityTypeNamespace)) {
t->SetAccess("public");
t->SetKind("namespace");
}
t->SetFlags(TagEntry::Tag_No_Signature_Format);
return t;
}