Иерархия классов HeaderDoc
HeaderElement (Root Class--any header entity that's significant) |
| (to HeaderDoc is a HeaderElement) |
| |
| |
|-----------APIOwner (Object that owns declared API) |
| | |
| |-------Header (Owner for header-wide API) |
| | |
| |-------CPPClass (Container for all non-Objective-C classes and |
| | C pseudoclass/COM Interface APIs). |
| | |
| |-------ObjCContainer |
| | |
| |-------ObjCClass (Owner for Objective-C class API) |
| | |
| |-------ObjCCategory (Owner for Objective-C category API) |
| | |
| |-------ObjCProtocol (Owner for Objective-C protocol API) |
| |
| |
|-----------Method (an Objective-C method) |
| |
|-----------Constant |
| |
|-----------Enum |
| |
|-----------Function (any non-objective-C function or method) |
| |
|-----------MinorAPIElement (parameter, members of structs) |
| |
|-----------PDefine |
| |
|-----------Struct (for both structs and unions) |
| | |
| |-------Var (subclass of Struct so that it can contain fields) |
| |
|-----------Typedef |
DocReference (Another root class. Used by gatherHeaderDoc to store |
information about documentation framesets within an |
input folder. The script uses this information to |
construct a top-level table of contents with links |
to each frameset.) |
ParseTree (Token tree instantiated from BlockParse.pm.) |
ParserState (Parser state instance instantiated from BlockParse.pm and stored |
in certain tokens within a ParseTree instance.) |
IncludeHash (a simple data structure for storing information about a |
#include directive.) |
В дополнение к классам, показанным выше, headerdoc2html/headerDoc2HTML.pl сценарий также использует необъектно-ориентированные модули Utilities.pm, ClassArray.pm, и BlockParse.pm. От большинства экземпляров класса инстанцируют headerdoc2html/headerDoc2HTML.pl на основе результатов вызова к blockParse.
ParseTree класс инстанцируют в самом блочном синтаксическом анализаторе. Это содержит маркерное дерево, и ряд операций на том дереве (распечатайте дерево, возвратите текст или представление HTML дерева, обойдите дерево синтаксического анализа для параметров, обойдите дерево синтаксического анализа для встроенной разметки HeaderDoc, и т.д.).
ParserState класс также инстанцируют в блочном синтаксическом анализаторе. Это содержит только три метода (new, _initialize, и print), и прежде всего просто гигантский хеш с некоторыми предопределенными значениями.
IncludeHash класс является по существу просто простой структурой данных для обработки основной информации о #include директивах. Это имеет два метода (new и _initialize).
gatherHeaderDoc инструмент использует внешнюю программу, resolveLinks, преобразовать специальные комментарии «запроса на канал» в ссылки к другим файлам в обрабатываемом каталоге. Этот инструмент (записанный в C) находится в bin каталог в каталоге модулей HeaderDoc.
Использование HeaderDoc xmllint (от libxml) для преобразования HTML в XHTML при генерации вывода XML. HeaderDoc также использует hdxml2manxml и xml2man от комплекта MPGL для генерации страниц справочника.