Skip to content

Commit

Permalink
Pass Definition to writeCodeLink
Browse files Browse the repository at this point in the history
for semantic syntax highlighting
  • Loading branch information
tttapa committed Jun 29, 2021
1 parent 53f2a06 commit 0cf5653
Show file tree
Hide file tree
Showing 22 changed files with 78 additions and 41 deletions.
2 changes: 1 addition & 1 deletion addon/doxyapp/doxyapp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class XRefDummyCodeGenerator : public CodeOutputInterface
// these are just null functions, they can be used to produce a syntax highlighted
// and cross-linked version of the source code, but who needs that anyway ;-)
void codify(const QCString &) override {}
void writeCodeLink(const QCString &,const QCString &,const QCString &,const QCString &,const QCString &) override {}
void writeCodeLink(const Definition *,const QCString &,const QCString &,const QCString &,const QCString &,const QCString &) override {}
void writeLineNumber(const QCString &,const QCString &,const QCString &,int) override {}
virtual void writeTooltip(const QCString &,const DocLinkInfo &,
const QCString &,const QCString &,const SourceLinkInfo &,
Expand Down
2 changes: 1 addition & 1 deletion addon/doxyparse/doxyparse.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ class Doxyparse : public CodeOutputInterface
// these are just null functions, they can be used to produce a syntax highlighted
// and cross-linked version of the source code, but who needs that anyway ;-)
void codify(const QCString &) override {}
void writeCodeLink(const QCString &,const QCString &,const QCString &,const QCString &,const QCString &) override {}
void writeCodeLink(const Definition *,const QCString &,const QCString &,const QCString &,const QCString &,const QCString &) override {}
void startCodeLine(bool) override {}
void endCodeLine() override {}
void writeCodeAnchor(const QCString &) override {}
Expand Down
6 changes: 3 additions & 3 deletions src/clangparser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -595,15 +595,15 @@ void ClangTUParser::writeMultiLineCodeLink(CodeOutputInterface &ol,
line++;
*(p-1)='\0';
//printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
ol.writeCodeLink(ref,file,anchor,sp,tooltip);
ol.writeCodeLink(d,ref,file,anchor,sp,tooltip);
ol.endCodeLine();
ol.startCodeLine(TRUE);
writeLineNumber(ol,fd,line);
}
else
{
//printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
ol.writeCodeLink(ref,file,anchor,sp,tooltip);
ol.writeCodeLink(d,ref,file,anchor,sp,tooltip);
done=TRUE;
}
}
Expand Down Expand Up @@ -635,7 +635,7 @@ void ClangTUParser::linkInclude(CodeOutputInterface &ol,const FileDef *fd,
}
if (ifd)
{
ol.writeCodeLink(ifd->getReference(),ifd->getOutputFileBase(),QCString(),text,ifd->briefDescriptionAsTooltip());
ol.writeCodeLink(ifd,ifd->getReference(),ifd->getOutputFileBase(),QCString(),text,ifd->briefDescriptionAsTooltip());
}
else
{
Expand Down
4 changes: 2 additions & 2 deletions src/code.l
Original file line number Diff line number Diff line change
Expand Up @@ -2501,13 +2501,13 @@ static void writeMultiLineCodeLink(yyscan_t yyscanner,CodeOutputInterface &ol,
{
yyextra->yyLineNr++;
DBG_CTX((stderr,"writeCodeLink(%s,%s,%s,%s)\n",qPrint(ref),qPrint(file),qPrint(anchor),qPrint(QCString(sp,p-sp-1))));
ol.writeCodeLink(ref,file,anchor,QCString(sp,p-sp-1),tooltip);
ol.writeCodeLink(d,ref,file,anchor,QCString(sp,p-sp-1),tooltip);
nextCodeLine(yyscanner);
}
else
{
DBG_CTX((stderr,"writeCodeLink(%s,%s,%s,%s)\n",qPrint(ref),qPrint(file),qPrint(anchor),sp));
ol.writeCodeLink(ref,file,anchor,QCString(sp),tooltip);
ol.writeCodeLink(d,ref,file,anchor,QCString(sp),tooltip);
done=TRUE;
}
}
Expand Down
10 changes: 6 additions & 4 deletions src/docbookgen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,8 @@ void DocbookCodeGenerator::codify(const QCString &text)
writeDocbookCodeString(m_t,text,m_col);
}

void DocbookCodeGenerator::writeCodeLink(const QCString &ref,const QCString &file,
void DocbookCodeGenerator::writeCodeLink(const Definition *,
const QCString &ref,const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip)
{
Expand All @@ -165,7 +166,8 @@ void DocbookCodeGenerator::writeCodeLink(const QCString &ref,const QCString &fil
m_col+=name.length();
}

void DocbookCodeGenerator::writeCodeLinkLine(const QCString &,const QCString &file,
void DocbookCodeGenerator::writeCodeLinkLine(const Definition *,
const QCString &,const QCString &file,
const QCString &,const QCString &name,
const QCString &)
{
Expand Down Expand Up @@ -232,8 +234,8 @@ void DocbookCodeGenerator::writeLineNumber(const QCString &ref,const QCString &f

if (!fileName.isEmpty() && !m_sourceFileName.isEmpty())
{
writeCodeLinkLine(ref,m_sourceFileName,anchor,lineNumber,QCString());
writeCodeLink(ref,fileName,anchor,lineNumber,QCString());
writeCodeLinkLine(nullptr,ref,m_sourceFileName,anchor,lineNumber,QCString());
writeCodeLink(nullptr,ref,fileName,anchor,lineNumber,QCString());
}
else
{
Expand Down
11 changes: 7 additions & 4 deletions src/docbookgen.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,12 @@ class DocbookCodeGenerator : public CodeOutputInterface
QCString sourceFileName() { return m_sourceFileName; }

void codify(const QCString &text);
void writeCodeLink(const QCString &ref,const QCString &file,
void writeCodeLink(const Definition *,
const QCString &ref,const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip);
void writeCodeLinkLine(const QCString &ref,const QCString &file,
void writeCodeLinkLine(const Definition *,
const QCString &ref,const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip);
void writeTooltip(const QCString &, const DocLinkInfo &, const QCString &,
Expand Down Expand Up @@ -106,10 +108,11 @@ class DocbookGenerator : public OutputGenerator
// --- CodeOutputInterface
void codify(const QCString &text)
{ m_codeGen.codify(text); }
void writeCodeLink(const QCString &ref, const QCString &file,
void writeCodeLink(const Definition *def,
const QCString &ref, const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip)
{ m_codeGen.writeCodeLink(ref,file,anchor,name,tooltip); }
{ m_codeGen.writeCodeLink(def,ref,file,anchor,name,tooltip); }
void writeLineNumber(const QCString &ref,const QCString &file,const QCString &anchor,int lineNumber)
{ m_codeGen.writeLineNumber(ref,file,anchor,lineNumber); }
void writeTooltip(const QCString &id, const DocLinkInfo &docInfo, const QCString &decl,
Expand Down
3 changes: 2 additions & 1 deletion src/filedef.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,8 @@ class DevNullCodeDocInterface : public CodeOutputInterface
{
public:
virtual void codify(const QCString &) override {}
virtual void writeCodeLink(const QCString &,const QCString &,
virtual void writeCodeLink(const Definition *,
const QCString &,const QCString &,
const QCString &,const QCString &,
const QCString &) override {}
virtual void writeTooltip(const QCString &, const DocLinkInfo &, const QCString &,
Expand Down
4 changes: 2 additions & 2 deletions src/fortrancode.l
Original file line number Diff line number Diff line change
Expand Up @@ -1035,13 +1035,13 @@ static void writeMultiLineCodeLink(yyscan_t yyscanner,CodeOutputInterface &ol,
{
yyextra->yyLineNr++;
//printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
ol.writeCodeLink(ref,file,anchor,QCString(sp,p-sp-1),tooltip);
ol.writeCodeLink(d,ref,file,anchor,QCString(sp,p-sp-1),tooltip);
nextCodeLine(yyscanner);
}
else
{
//printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
ol.writeCodeLink(ref,file,anchor,sp,tooltip);
ol.writeCodeLink(d,ref,file,anchor,sp,tooltip);
done=TRUE;
}
}
Expand Down
20 changes: 18 additions & 2 deletions src/htmlgen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -720,12 +720,28 @@ void HtmlCodeGenerator::writeLineNumber(const QCString &ref,const QCString &file
m_col=0;
}

void HtmlCodeGenerator::writeCodeLink(const QCString &ref,const QCString &f,
void HtmlCodeGenerator::writeCodeLink(const Definition *def,
const QCString &ref,const QCString &f,
const QCString &anchor, const QCString &name,
const QCString &tooltip)
{
//printf("writeCodeLink(ref=%s,f=%s,anchor=%s,name=%s,tooltip=%s)\n",ref,f,anchor,name,tooltip);
_writeCodeLink("code",ref,f,anchor,name,tooltip);
auto getClassNames = [](Definition::DefType tp) {
switch (tp) {
case Definition::DefType::TypeClass: return "highlightclass code";
case Definition::DefType::TypeFile: return "highlightfile code";
case Definition::DefType::TypeNamespace: return "highlightnamespace code";
case Definition::DefType::TypeMember: return "highlightmember code";
case Definition::DefType::TypeGroup: return "highlightgroup code";
case Definition::DefType::TypePackage: return "highlightpackage code";
case Definition::DefType::TypePage: return "highlightpage code";
case Definition::DefType::TypeDir: return "highlightdir code";
case Definition::DefType::TypeConcept: return "highlightconcept code";
default: return "code";
}
};
const auto classes = def ? getClassNames(def->definitionType()) : "code";
_writeCodeLink(classes,ref,f,anchor,name,tooltip);
}

void HtmlCodeGenerator::_writeCodeLink(const QCString &className,
Expand Down
8 changes: 5 additions & 3 deletions src/htmlgen.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ class HtmlCodeGenerator : public CodeOutputInterface
void setId(int id) { m_id = id; }
void setRelativePath(const QCString &path);
void codify(const QCString &text);
void writeCodeLink(const QCString &ref,const QCString &file,
void writeCodeLink(const Definition *def,
const QCString &ref,const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip);
void writeTooltip(const QCString &id,
Expand Down Expand Up @@ -89,10 +90,11 @@ class HtmlGenerator : public OutputGenerator
// ---- CodeOutputInterface
void codify(const QCString &text)
{ m_codeGen.codify(text); }
void writeCodeLink(const QCString &ref,const QCString &file,
void writeCodeLink(const Definition *def,
const QCString &ref,const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip)
{ m_codeGen.writeCodeLink(ref,file,anchor,name,tooltip); }
{ m_codeGen.writeCodeLink(def,ref,file,anchor,name,tooltip); }
void writeLineNumber(const QCString &ref,const QCString &file,const QCString &anchor,int lineNumber)
{ m_codeGen.writeLineNumber(ref,file,anchor,lineNumber); }
void writeTooltip(const QCString &id, const DocLinkInfo &docInfo, const QCString &decl,
Expand Down
5 changes: 3 additions & 2 deletions src/latexgen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,8 @@ void LatexCodeGenerator::codify(const QCString &str)
}


void LatexCodeGenerator::writeCodeLink(const QCString &ref,const QCString &f,
void LatexCodeGenerator::writeCodeLink(const Definition *,
const QCString &ref,const QCString &f,
const QCString &anchor,const QCString &name,
const QCString &)
{
Expand Down Expand Up @@ -196,7 +197,7 @@ void LatexCodeGenerator::writeLineNumber(const QCString &ref,const QCString &fil
{
m_t << "\\Hypertarget{" << stripPath(lineAnchor) << "}";
}
writeCodeLink(ref,fileName,anchor,lineNumber,QCString());
writeCodeLink(nullptr,ref,fileName,anchor,lineNumber,QCString());
}
else
{
Expand Down
8 changes: 5 additions & 3 deletions src/latexgen.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ class LatexCodeGenerator : public CodeOutputInterface
void setRelativePath(const QCString &path);
void setSourceFileName(const QCString &sourceFileName);
void codify(const QCString &text) override;
void writeCodeLink(const QCString &ref,const QCString &file,
void writeCodeLink(const Definition *def,
const QCString &ref,const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip) override;
void writeTooltip(const QCString &,
Expand Down Expand Up @@ -96,10 +97,11 @@ class LatexGenerator : public OutputGenerator
// --- CodeOutputInterface
void codify(const QCString &text)
{ m_codeGen.codify(text); }
void writeCodeLink(const QCString &ref, const QCString &file,
void writeCodeLink(const Definition *def,
const QCString &ref, const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip)
{ m_codeGen.writeCodeLink(ref,file,anchor,name,tooltip); }
{ m_codeGen.writeCodeLink(def,ref,file,anchor,name,tooltip); }
void writeLineNumber(const QCString &ref,const QCString &file,const QCString &anchor,int lineNumber)
{ m_codeGen.writeLineNumber(ref,file,anchor,lineNumber); }
void writeTooltip(const QCString &id, const DocLinkInfo &docInfo, const QCString &decl,
Expand Down
3 changes: 2 additions & 1 deletion src/mangen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,8 @@ void ManGenerator::writeObjectLink(const QCString &,const QCString &,
startBold(); docify(name); endBold();
}

void ManGenerator::writeCodeLink(const QCString &,const QCString &,
void ManGenerator::writeCodeLink(const Definition *,
const QCString &,const QCString &,
const QCString &, const QCString &name,
const QCString &)
{
Expand Down
3 changes: 2 additions & 1 deletion src/mangen.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,8 @@ class ManGenerator : public OutputGenerator
void codify(const QCString &text);
void writeObjectLink(const QCString &ref,const QCString &file,
const QCString &anchor,const QCString &name);
void writeCodeLink(const QCString &ref,const QCString &file,
void writeCodeLink(const Definition *def,
const QCString &ref,const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip);
void writeTooltip(const QCString &, const DocLinkInfo &, const QCString &,
Expand Down
5 changes: 4 additions & 1 deletion src/outputgen.h
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ class CodeOutputInterface
virtual void codify(const QCString &s) = 0;

/*! Writes a link to an object in a code fragment.
* \param def The definition of the object, used for semantic syntax
* highlighting, may be nullptr.
* \param ref If this is non-zero, the object is to be found in
* an external documentation file.
* \param file The file in which the object is located.
Expand All @@ -83,7 +85,8 @@ class CodeOutputInterface
* \param name The text to display as a placeholder for the link.
* \param tooltip The tooltip to display when the mouse is on the link.
*/
virtual void writeCodeLink(const QCString &ref,const QCString &file,
virtual void writeCodeLink(const Definition *def,
const QCString &ref,const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip) = 0;

Expand Down
5 changes: 3 additions & 2 deletions src/outputlist.h
Original file line number Diff line number Diff line change
Expand Up @@ -141,10 +141,11 @@ class OutputList : public OutputDocInterface
void writeObjectLink(const QCString &ref,const QCString &file,
const QCString &anchor, const QCString &name)
{ forall(&OutputGenerator::writeObjectLink,ref,file,anchor,name); }
void writeCodeLink(const QCString &ref,const QCString &file,
void writeCodeLink(const Definition *def,
const QCString &ref,const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip)
{ forall(&OutputGenerator::writeCodeLink,ref,file,anchor,name,tooltip); }
{ forall(&OutputGenerator::writeCodeLink,def,ref,file,anchor,name,tooltip); }
void writeTooltip(const QCString &id, const DocLinkInfo &docInfo, const QCString &decl,
const QCString &desc, const SourceLinkInfo &defInfo, const SourceLinkInfo &declInfo)
{ forall(&OutputGenerator::writeTooltip,id,docInfo,decl,desc,defInfo,declInfo); }
Expand Down
4 changes: 2 additions & 2 deletions src/pycode.l
Original file line number Diff line number Diff line change
Expand Up @@ -1125,13 +1125,13 @@ static void writeMultiLineCodeLink(yyscan_t yyscanner,
{
yyextra->yyLineNr++;
//printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
ol.writeCodeLink(ref,file,anchor,QCString(sp,p-sp-1),tooltip);
ol.writeCodeLink(d,ref,file,anchor,QCString(sp,p-sp-1),tooltip);
nextCodeLine(yyscanner);
}
else
{
//printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
ol.writeCodeLink(ref,file,anchor,sp,tooltip);
ol.writeCodeLink(d,ref,file,anchor,sp,tooltip);
done=TRUE;
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/rtfgen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1425,7 +1425,8 @@ void RTFGenerator::endPageRef(const QCString &clname, const QCString &anchor)
m_t << ")";
}

void RTFGenerator::writeCodeLink(const QCString &ref,const QCString &f,
void RTFGenerator::writeCodeLink(const Definition *,
const QCString &ref,const QCString &f,
const QCString &anchor,const QCString &name,
const QCString &)
{
Expand Down
3 changes: 2 additions & 1 deletion src/rtfgen.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,8 @@ class RTFGenerator : public OutputGenerator
void codify(const QCString &text);
void writeObjectLink(const QCString &ref,const QCString &file,
const QCString &anchor,const QCString &name);
void writeCodeLink(const QCString &ref, const QCString &file,
void writeCodeLink(const Definition *def,
const QCString &ref, const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip);
void writeTooltip(const QCString &, const DocLinkInfo &, const QCString &,
Expand Down
4 changes: 2 additions & 2 deletions src/vhdlcode.l
Original file line number Diff line number Diff line change
Expand Up @@ -1250,12 +1250,12 @@ static void writeMultiLineCodeLink(yyscan_t yyscanner,CodeOutputInterface &ol,
{
yyextra->yyLineNr++;
// printf("writeCodeLink(%s,%s,%s,%s)\n",ref,file,anchor,sp);
ol.writeCodeLink(ref,file,anchor,QCString(sp,p-sp-1),tooltip);
ol.writeCodeLink(d,ref,file,anchor,QCString(sp,p-sp-1),tooltip);
nextCodeLine(yyscanner);
}
else
{
ol.writeCodeLink(ref,file,anchor,sp,tooltip);
ol.writeCodeLink(d,ref,file,anchor,sp,tooltip);
done=true;
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/xmlgen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,8 @@ void XMLCodeGenerator::codify(const QCString &text)
}
writeXMLCodeString(m_t,text,m_col);
}
void XMLCodeGenerator::writeCodeLink(const QCString &ref,const QCString &file,
void XMLCodeGenerator::writeCodeLink(const Definition *,
const QCString &ref,const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip)
{
Expand Down
3 changes: 2 additions & 1 deletion src/xmlgen.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ class XMLCodeGenerator : public CodeOutputInterface
virtual ~XMLCodeGenerator() { }

void codify(const QCString &text) override;
void writeCodeLink(const QCString &ref,const QCString &file,
void writeCodeLink(const Definition *def,
const QCString &ref,const QCString &file,
const QCString &anchor,const QCString &name,
const QCString &tooltip) override;
void writeTooltip(const QCString &, const DocLinkInfo &, const QCString &,
Expand Down

0 comments on commit 0cf5653

Please sign in to comment.