Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

ddmd.doc

Compiler implementation of the D programming language.
Authors:

Source: doc.d

class Section;
class ParamSection: ddmd.doc.Section;
class MacroSection: ddmd.doc.Section;
void gendocfile(Module m);
void escapeDdocString(OutBuffer* buf, size_t start);
Having unmatched parentheses can hose the output of Ddoc, as the macros depend on properly nested parentheses. This function replaces all ( with ( and ) with ) to preserve text literally. This also means macros in the text won't be expanded.
void escapeStrayParenthesis(Loc loc, OutBuffer* buf, size_t start);
Having unmatched parentheses can hose the output of Ddoc, as the macros depend on properly nested parentheses.
Fix by replacing unmatched ( with ( and unmatched ) with ).
static size_t getCodeIndent(const(char)* src);
emitComment
Get leading indentation from 'src' which represents lines of code.
static void expandTemplateMixinComments(TemplateMixin tm, OutBuffer* buf, Scope* sc);
Recursively expand template mixin member docs into the scope.
struct DocComment;
static void parseMacros(Escape** pescapetable, Macro** pmacrotable, const(char)* m, size_t mlen);
Parse macros out of Macros: section. Macros are of the form: name1 = value1
name2 = value2
static void parseEscapes(Escape** pescapetable, const(char)* textstart, size_t textlen);
Parse escapes of the form: /c/string/ where c is a single character. Multiple escapes can be separated by whitespace and/or commas.
void parseSections(const(char)* comment);
Parse next paragraph out of *pcomment. Update *pcomment to point past paragraph. Returns NULL if no more paragraphs. If paragraph ends in 'identifier:', then (*pcomment)[0 .. idlen] is the identifier.
int cmp(const(char)* stringz, const(void)* s, size_t slen);
Compare 0-terminated string with length terminated string. Return < 0, ==0, > 0
bool isDitto(const(char)* comment);
Return true if comment consists entirely of "ditto".
const(char)* skipwhitespace(const(char)* p);
Skip white space.
size_t skiptoident(OutBuffer* buf, size_t i);
Scan forward to one of: start of identifier beginning of next line end of buf
size_t skippastident(OutBuffer* buf, size_t i);
Scan forward past end of identifier.
size_t skippastURL(OutBuffer* buf, size_t i);
Scan forward past URL starting at i. We don't want to highlight parts of a URL.
Returns:
i if not a URL index just past it if it is a URL
bool isIdentifier(Dsymbols* a, const(char)* p, size_t len);
bool isKeyword(const(char)* p, size_t len);
TypeFunction isTypeFunction(Dsymbol s);
Parameter isFunctionParameter(Dsymbols* a, const(char)* p, size_t len);
TemplateParameter isTemplateParameter(Dsymbols* a, const(char)* p, size_t len);
bool isReservedName(const(char)* str, size_t len);
Return true if str is a reserved symbol name that starts with a double underscore.
void highlightText(Scope* sc, Dsymbols* a, OutBuffer* buf, size_t offset);
Highlight text section.
void highlightCode(Scope* sc, Dsymbol s, OutBuffer* buf, size_t offset);
Highlight code for DDOC section.
void highlightCode(Scope* sc, Dsymbols* a, OutBuffer* buf, size_t offset);
void highlightCode3(Scope* sc, OutBuffer* buf, const(char)* p, const(char)* pend);
void highlightCode2(Scope* sc, Dsymbols* a, OutBuffer* buf, size_t offset);
Highlight code for CODE section.
bool isCVariadicArg(const(char)* p, size_t len);
Determine if p points to the start of a "..." parameter identifier.
bool isIdStart(const(char)* p);
Determine if p points to the start of an identifier.
bool isIdTail(const(char)* p);
Determine if p points to the rest of an identifier.
bool isIndentWS(const(char)* p);
Determine if p points to the indentation space.
int utfStride(const(char)* p);
Return number of bytes in UTF character.