Doxygen
Loading...
Searching...
No Matches
DocbookCodeGenerator Class Referencefinal

#include <src/docbookgen.h>

Inheritance diagram for DocbookCodeGenerator:
Collaboration diagram for DocbookCodeGenerator:

Public Member Functions

 DocbookCodeGenerator (TextStream *t)
void setTextStream (TextStream *t)
OutputType type () const override
std::unique_ptr< OutputCodeIntfclone () override
void codify (const DString &text) override
void stripCodeComments (bool b) override
void startSpecialComment () override
void endSpecialComment () override
void setStripIndentAmount (size_t amount) override
void writeCodeLink (CodeSymbolType type, const DString &ref, const DString &file, const DString &anchor, const DString &name, const DString &tooltip) override
void writeTooltip (const DString &, const DocLinkInfo &, const DString &, const DString &, const SourceLinkInfo &, const SourceLinkInfo &) override
void startCodeLine (int) override
void endCodeLine () override
void startFontClass (const DString &colorClass) override
void endFontClass () override
void writeCodeAnchor (const DString &) override
void writeLineNumber (const DString &extRef, const DString &compId, const DString &anchorId, int l, bool writeLineAnchor) override
void startCodeFragment (const DString &style) override
void endCodeFragment (const DString &style) override
void startFold (int, const DString &, const DString &) override
void endFold () override
void setRelativePath (const DString &path)
void setSourceFileName (const DString &sourceFileName)
DString sourceFileName ()
void finish ()
Public Member Functions inherited from OutputCodeIntf
 OutputCodeIntf ()=default

Private Member Functions

void writeCodeLinkLine (CodeSymbolType type, const DString &ref, const DString &file, const DString &anchor, const DString &name, const DString &tooltip, bool)

Private Attributes

TextStreamm_t
DString m_refId
DString m_external
int m_lineNumber = -1
size_t m_col = 0
bool m_insideCodeLine = false
bool m_insideSpecialHL = false
DString m_relPath
DString m_sourceFileName
bool m_stripCodeComments = false
bool m_hide = false
size_t m_stripIndentAmount = 0

Detailed Description

Definition at line 46 of file docbookgen.h.

Constructor & Destructor Documentation

◆ DocbookCodeGenerator()

DocbookCodeGenerator::DocbookCodeGenerator ( TextStream * t)

Definition at line 154 of file docbookgen.cpp.

154 : m_t(t)
155{
156}
TextStream * m_t
Definition docbookgen.h:88

References m_t.

Member Function Documentation

◆ clone()

std::unique_ptr< OutputCodeIntf > DocbookCodeGenerator::clone ( )
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 53 of file docbookgen.h.

53{ return std::make_unique<DocbookCodeGenerator>(m_t); }

References m_t.

◆ codify()

void DocbookCodeGenerator::codify ( const DString & text)
overridevirtual

Implements OutputCodeIntf.

Definition at line 158 of file docbookgen.cpp.

159{
160 Docbook_DB(("(codify \"%s\")\n",text));
161 writeDocbookCodeString(m_hide,*m_t,text,m_col,static_cast<size_t>(m_stripIndentAmount));
162}
void writeDocbookCodeString(bool hide, TextStream &t, const DString &str, size_t &col, size_t stripIndentAmount)
#define Docbook_DB(x)

References Docbook_DB, m_col, m_hide, m_stripIndentAmount, m_t, and writeDocbookCodeString().

Referenced by writeLineNumber().

◆ endCodeFragment()

void DocbookCodeGenerator::endCodeFragment ( const DString & style)
overridevirtual

Implements OutputCodeIntf.

Definition at line 300 of file docbookgen.cpp.

301{
303 bool wasHidden = m_hide;
304 m_hide = false;
305 //endCodeLine checks is there is still an open code line, if so closes it.
306 endCodeLine();
307 m_hide = wasHidden;
308
309 *m_t << "</programlisting>";
310}
void endCodeLine() override
#define DB_GEN_C1(x)

References DB_GEN_C1, endCodeLine(), m_hide, and m_t.

◆ endCodeLine()

void DocbookCodeGenerator::endCodeLine ( )
overridevirtual

Implements OutputCodeIntf.

Definition at line 225 of file docbookgen.cpp.

226{
227 if (m_hide) return;
228 if (m_insideCodeLine) *m_t << "\n";
229 Docbook_DB(("(endCodeLine)\n"));
230 m_lineNumber = -1;
231 m_refId.clear();
233 m_insideCodeLine=false;
234}
void clear()
Definition dstring.h:214

References DString::clear(), Docbook_DB, m_external, m_hide, m_insideCodeLine, m_lineNumber, m_refId, and m_t.

Referenced by endCodeFragment(), and finish().

◆ endFold()

void DocbookCodeGenerator::endFold ( )
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 76 of file docbookgen.h.

76{}

◆ endFontClass()

void DocbookCodeGenerator::endFontClass ( )
overridevirtual

Implements OutputCodeIntf.

Definition at line 244 of file docbookgen.cpp.

245{
246 if (m_hide) return;
247 Docbook_DB(("(endFontClass)\n"));
248 *m_t << "</emphasis>"; // non DocBook
249 m_insideSpecialHL=false;
250}

References Docbook_DB, m_hide, m_insideSpecialHL, and m_t.

◆ endSpecialComment()

void DocbookCodeGenerator::endSpecialComment ( )
overridevirtual

Implements OutputCodeIntf.

Definition at line 174 of file docbookgen.cpp.

175{
176 m_hide = false;
177}

References m_hide.

◆ finish()

void DocbookCodeGenerator::finish ( )

Definition at line 289 of file docbookgen.cpp.

290{
291 endCodeLine();
292}

References endCodeLine().

◆ setRelativePath()

void DocbookCodeGenerator::setRelativePath ( const DString & path)
inline

Definition at line 78 of file docbookgen.h.

78{ m_relPath = path; }

References m_relPath.

Referenced by DocbookGenerator::startFile().

◆ setSourceFileName()

void DocbookCodeGenerator::setSourceFileName ( const DString & sourceFileName)
inline

◆ setStripIndentAmount()

void DocbookCodeGenerator::setStripIndentAmount ( size_t amount)
overridevirtual

Implements OutputCodeIntf.

Definition at line 179 of file docbookgen.cpp.

180{
181 m_stripIndentAmount = amount;
182}

References m_stripIndentAmount.

◆ setTextStream()

void DocbookCodeGenerator::setTextStream ( TextStream * t)
inline

Definition at line 50 of file docbookgen.h.

50{ m_t = t; }

References m_t.

Referenced by DocbookGenerator::DocbookGenerator(), and DocbookGenerator::operator=().

◆ sourceFileName()

DString DocbookCodeGenerator::sourceFileName ( )
inline

Definition at line 80 of file docbookgen.h.

80{ return m_sourceFileName; }

References m_sourceFileName.

Referenced by DocbookGenerator::endFile(), and setSourceFileName().

◆ startCodeFragment()

void DocbookCodeGenerator::startCodeFragment ( const DString & style)
overridevirtual

Implements OutputCodeIntf.

Definition at line 294 of file docbookgen.cpp.

295{
297 *m_t << "<programlisting linenumbering=\"unnumbered\">";
298}

References DB_GEN_C1, and m_t.

◆ startCodeLine()

void DocbookCodeGenerator::startCodeLine ( int )
overridevirtual

Implements OutputCodeIntf.

Definition at line 217 of file docbookgen.cpp.

218{
219 if (m_hide) return;
220 Docbook_DB(("(startCodeLine)\n"));
221 m_insideCodeLine=true;
222 m_col=0;
223}

References Docbook_DB, m_col, m_hide, and m_insideCodeLine.

◆ startFold()

void DocbookCodeGenerator::startFold ( int ,
const DString & ,
const DString &  )
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 75 of file docbookgen.h.

75{}

◆ startFontClass()

void DocbookCodeGenerator::startFontClass ( const DString & colorClass)
overridevirtual

Implements OutputCodeIntf.

Definition at line 236 of file docbookgen.cpp.

237{
238 if (m_hide) return;
239 Docbook_DB(("(startFontClass)\n"));
240 *m_t << "<emphasis role=\"" << colorClass << "\">";
242}

References Docbook_DB, m_hide, m_insideSpecialHL, and m_t.

◆ startSpecialComment()

void DocbookCodeGenerator::startSpecialComment ( )
overridevirtual

Implements OutputCodeIntf.

Definition at line 169 of file docbookgen.cpp.

170{
172}

References m_hide, and m_stripCodeComments.

◆ stripCodeComments()

void DocbookCodeGenerator::stripCodeComments ( bool b)
overridevirtual

Implements OutputCodeIntf.

Definition at line 164 of file docbookgen.cpp.

165{
167}

References m_stripCodeComments.

◆ type()

OutputType DocbookCodeGenerator::type ( ) const
inlineoverridevirtual

Implements OutputCodeIntf.

Definition at line 52 of file docbookgen.h.

52{ return OutputType::Docbook; }

References Docbook.

◆ writeCodeAnchor()

void DocbookCodeGenerator::writeCodeAnchor ( const DString & )
overridevirtual

Implements OutputCodeIntf.

Definition at line 252 of file docbookgen.cpp.

253{
254 Docbook_DB(("(writeCodeAnchor)\n"));
255}

References Docbook_DB.

◆ writeCodeLink()

void DocbookCodeGenerator::writeCodeLink ( CodeSymbolType type,
const DString & ref,
const DString & file,
const DString & anchor,
const DString & name,
const DString & tooltip )
overridevirtual

Implements OutputCodeIntf.

Definition at line 184 of file docbookgen.cpp.

188{
189 if (m_hide) return;
190 Docbook_DB(("(writeCodeLink)\n"));
191 writeDocbookLink(*m_t,ref,file,anchor,name,tooltip);
192 m_col+=name.length();
193}
size_t length() const
Returns the length of the string, not counting the 0-terminator.
Definition dstring.h:151
void writeDocbookLink(TextStream &t, const DString &, const DString &compoundId, const DString &anchorId, const DString &text, const DString &)

References Docbook_DB, DString::length(), m_col, m_hide, m_t, and writeDocbookLink().

Referenced by writeLineNumber().

◆ writeCodeLinkLine()

void DocbookCodeGenerator::writeCodeLinkLine ( CodeSymbolType type,
const DString & ref,
const DString & file,
const DString & anchor,
const DString & name,
const DString & tooltip,
bool writeLineAnchor )
private

Definition at line 195 of file docbookgen.cpp.

199{
200 if (m_hide) return;
201 Docbook_DB(("(writeCodeLinkLine)\n"));
202 if (!writeLineAnchor) return;
203 *m_t << "<anchor xml:id=\"_" << stripExtensionGeneral(stripPath(file),".xml");
204 *m_t << "_1l";
205 writeDocbookString(*m_t,name);
206 *m_t << "\"/>";
207 m_col+=name.length();
208}
void writeDocbookString(TextStream &t, const DString &s)
DString stripExtensionGeneral(const DString &fName, const DString &ext)
Definition util.cpp:3945
DString stripPath(const DString &s)
Definition util.cpp:3960

References Docbook_DB, DString::length(), m_col, m_hide, m_t, stripExtensionGeneral(), stripPath(), and writeDocbookString().

Referenced by writeLineNumber().

◆ writeLineNumber()

void DocbookCodeGenerator::writeLineNumber ( const DString & extRef,
const DString & compId,
const DString & anchorId,
int l,
bool writeLineAnchor )
overridevirtual

Implements OutputCodeIntf.

Definition at line 257 of file docbookgen.cpp.

259{
260 if (m_hide) return;
261 Docbook_DB(("(writeLineNumber)\n"));
262 m_insideCodeLine = true;
263 if (Config_getBool(SOURCE_BROWSER))
264 {
265 DString lineNumber;
266 lineNumber.sprintf("%05d",l);
267
268 if (!m_sourceFileName.empty())
269 {
270 writeCodeLinkLine(CodeSymbolType::Default,ref,m_sourceFileName,anchor,lineNumber,DString(),writeLineAnchor);
271 }
272 if (!fileName.empty())
273 {
274 writeCodeLink(CodeSymbolType::Default,ref,fileName,anchor,lineNumber,DString());
275 }
276 else
277 {
278 codify(lineNumber);
279 }
280 *m_t << " ";
281 }
282 else
283 {
284 *m_t << l << " ";
285 }
286 m_col=0;
287}
bool empty() const
Returns true iff the string is empty (std::string compatible alias for isEmpty()).
Definition dstring.h:148
DString & sprintf(const char *format,...)
Definition dstring.cpp:34
void codify(const DString &text) override
void writeCodeLinkLine(CodeSymbolType type, const DString &ref, const DString &file, const DString &anchor, const DString &name, const DString &tooltip, bool)
void writeCodeLink(CodeSymbolType type, const DString &ref, const DString &file, const DString &anchor, const DString &name, const DString &tooltip) override
#define Config_getBool(name)
Definition config.h:33

References codify(), Config_getBool, Default, Docbook_DB, DString::empty(), m_col, m_hide, m_insideCodeLine, m_sourceFileName, m_t, DString::sprintf(), writeCodeLink(), and writeCodeLinkLine().

◆ writeTooltip()

void DocbookCodeGenerator::writeTooltip ( const DString & ,
const DocLinkInfo & ,
const DString & ,
const DString & ,
const SourceLinkInfo & ,
const SourceLinkInfo &  )
overridevirtual

Implements OutputCodeIntf.

Definition at line 210 of file docbookgen.cpp.

213{
214 Docbook_DB(("(writeToolTip)\n"));
215}

References Docbook_DB.

Member Data Documentation

◆ m_col

size_t DocbookCodeGenerator::m_col = 0
private

Definition at line 92 of file docbookgen.h.

Referenced by codify(), startCodeLine(), writeCodeLink(), writeCodeLinkLine(), and writeLineNumber().

◆ m_external

DString DocbookCodeGenerator::m_external
private

Definition at line 90 of file docbookgen.h.

Referenced by endCodeLine().

◆ m_hide

◆ m_insideCodeLine

bool DocbookCodeGenerator::m_insideCodeLine = false
private

Definition at line 93 of file docbookgen.h.

Referenced by endCodeLine(), startCodeLine(), and writeLineNumber().

◆ m_insideSpecialHL

bool DocbookCodeGenerator::m_insideSpecialHL = false
private

Definition at line 94 of file docbookgen.h.

Referenced by endFontClass(), and startFontClass().

◆ m_lineNumber

int DocbookCodeGenerator::m_lineNumber = -1
private

Definition at line 91 of file docbookgen.h.

Referenced by endCodeLine().

◆ m_refId

DString DocbookCodeGenerator::m_refId
private

Definition at line 89 of file docbookgen.h.

Referenced by endCodeLine().

◆ m_relPath

DString DocbookCodeGenerator::m_relPath
private

Definition at line 95 of file docbookgen.h.

Referenced by setRelativePath().

◆ m_sourceFileName

DString DocbookCodeGenerator::m_sourceFileName
private

Definition at line 96 of file docbookgen.h.

Referenced by setSourceFileName(), sourceFileName(), and writeLineNumber().

◆ m_stripCodeComments

bool DocbookCodeGenerator::m_stripCodeComments = false
private

Definition at line 97 of file docbookgen.h.

Referenced by startSpecialComment(), and stripCodeComments().

◆ m_stripIndentAmount

size_t DocbookCodeGenerator::m_stripIndentAmount = 0
private

Definition at line 99 of file docbookgen.h.

Referenced by codify(), and setStripIndentAmount().

◆ m_t


The documentation for this class was generated from the following files: