\documentclass{report}
\usepackage{hyperref}
% WARNING: THIS SHOULD BE MODIFIED DEPENDING ON THE LETTER/A4 SIZE
\oddsidemargin 0cm
\evensidemargin 0cm
\marginparsep 0cm
\marginparwidth 0cm
\parindent 0cm
\setlength{\textwidth}{\paperwidth}
\addtolength{\textwidth}{-2in}


% Conditional define to determine if pdf output is used
\newif\ifpdf
\ifx\pdfoutput\undefined
\pdffalse
\else
\pdfoutput=1
\pdftrue
\fi

\ifpdf
  \usepackage[pdftex]{graphicx}
\else
  \usepackage[dvips]{graphicx}
\fi

% Write Document information for pdflatex/pdftex
\ifpdf
\pdfinfo{
 /Author     (Pasdoc)
 /Title      ()
}
\fi


% definitons for warning and note tag
\usepackage[most]{tcolorbox}
\newtcolorbox{tcbwarning}{
 breakable,
 enhanced jigsaw,
 top=0pt,
 bottom=0pt,
 titlerule=0pt,
 bottomtitle=0pt,
 rightrule=0pt,
 toprule=0pt,
 bottomrule=0pt,
 colback=white,
 arc=0pt,
 outer arc=0pt,
 title style={white},
 fonttitle=\color{black}\bfseries,
 left=8pt,
 colframe=red,
 title={Warning:},
}
\newtcolorbox{tcbnote}{
 breakable,
 enhanced jigsaw,
 top=0pt,
 bottom=0pt,
 titlerule=0pt,
 bottomtitle=0pt,
 rightrule=0pt,
 toprule=0pt,
 bottomrule=0pt,
 colback=white,
 arc=0pt,
 outer arc=0pt,
 title style={white},
 fonttitle=\color{black}\bfseries,
 left=8pt,
 colframe=yellow,
 title={Note:},
}

\begin{document}
\label{toc}\tableofcontents
\newpage
% special variable used for calculating some widths.
\newlength{\tmplength}
\chapter{Unit ok{\_}attributes}
\label{ok_attributes}
\index{ok{\_}attributes}
\section{Overview}
\begin{description}
\item[\texttt{\begin{ttfamily}NonEmptyString\end{ttfamily} Class}]Delphi attributes test from \href{http://www.malcolmgroves.com/blog/?p=530}{http://www.malcolmgroves.com/blog/?p=530} Attribute class, without Attribute suffix, PasDoc should link to it
\item[\texttt{\begin{ttfamily}MinimumIntegerAttribute\end{ttfamily} Class}]Attribute class, with Attribute suffix, PasDoc should link to it too
\item[\texttt{\begin{ttfamily}MaximumIntegerAttribute\end{ttfamily} Class}]Attribute class, with Attribute suffix, PasDoc should link to it too
\item[\texttt{\begin{ttfamily}TPerson\end{ttfamily} Class}]
\item[\texttt{\begin{ttfamily}IUIContainer\end{ttfamily} Interface}]Test that GUIDs are handled gracefully
\item[\texttt{\begin{ttfamily}TMyClass1\end{ttfamily} Class}]Tests from \href{https://github.com/pasdoc/pasdoc/issues/179}{https://github.com/pasdoc/pasdoc/issues/179}
\item[\texttt{\begin{ttfamily}TMyClass2\end{ttfamily} Class}]
\item[\texttt{\begin{ttfamily}IEnumerator\end{ttfamily} Interface}]
\item[\texttt{\begin{ttfamily}TClassWithNested\end{ttfamily} Class}]Class with nested classes with attributes.
\end{description}
\section{Classes, Interfaces, Objects and Records}
\ifpdf
\subsection*{\large{\textbf{NonEmptyString Class}}\normalsize\hspace{1ex}\hrulefill}
\else
\subsection*{NonEmptyString Class}
\fi
\label{ok_attributes.NonEmptyString}
\index{NonEmptyString}
\subsubsection*{\large{\textbf{Hierarchy}}\normalsize\hspace{1ex}\hfill}
NonEmptyString {$>$} TCustomAttribute
\subsubsection*{\large{\textbf{Description}}\normalsize\hspace{1ex}\hfill}
Delphi attributes test from \href{http://www.malcolmgroves.com/blog/?p=530}{http://www.malcolmgroves.com/blog/?p=530} Attribute class, without Attribute suffix, PasDoc should link to it\subsubsection*{\large{\textbf{Methods}}\normalsize\hspace{1ex}\hfill}
\paragraph*{Create}\hspace*{\fill}

\label{ok_attributes.NonEmptyString-Create}
\index{Create}
\begin{list}{}{
\settowidth{\tmplength}{\textbf{Description}}
\setlength{\itemindent}{0cm}
\setlength{\listparindent}{0cm}
\setlength{\leftmargin}{\evensidemargin}
\addtolength{\leftmargin}{\tmplength}
\settowidth{\labelsep}{X}
\addtolength{\leftmargin}{\labelsep}
\setlength{\labelwidth}{\tmplength}
}
\item[\textbf{Declaration}\hfill]
\ifpdf
\begin{flushleft}
\fi
\begin{ttfamily}
public constructor Create(const AMessage: String);\end{ttfamily}

\ifpdf
\end{flushleft}
\fi

\end{list}
\ifpdf
\subsection*{\large{\textbf{MinimumIntegerAttribute Class}}\normalsize\hspace{1ex}\hrulefill}
\else
\subsection*{MinimumIntegerAttribute Class}
\fi
\label{ok_attributes.MinimumIntegerAttribute}
\index{MinimumIntegerAttribute}
\subsubsection*{\large{\textbf{Hierarchy}}\normalsize\hspace{1ex}\hfill}
MinimumIntegerAttribute {$>$} TCustomAttribute
\subsubsection*{\large{\textbf{Description}}\normalsize\hspace{1ex}\hfill}
Attribute class, with Attribute suffix, PasDoc should link to it too\subsubsection*{\large{\textbf{Methods}}\normalsize\hspace{1ex}\hfill}
\paragraph*{Create}\hspace*{\fill}

\label{ok_attributes.MinimumIntegerAttribute-Create}
\index{Create}
\begin{list}{}{
\settowidth{\tmplength}{\textbf{Description}}
\setlength{\itemindent}{0cm}
\setlength{\listparindent}{0cm}
\setlength{\leftmargin}{\evensidemargin}
\addtolength{\leftmargin}{\tmplength}
\settowidth{\labelsep}{X}
\addtolength{\leftmargin}{\labelsep}
\setlength{\labelwidth}{\tmplength}
}
\item[\textbf{Declaration}\hfill]
\ifpdf
\begin{flushleft}
\fi
\begin{ttfamily}
public constructor Create(const MinInt: Integer; const AMessage: String);\end{ttfamily}

\ifpdf
\end{flushleft}
\fi

\end{list}
\ifpdf
\subsection*{\large{\textbf{MaximumIntegerAttribute Class}}\normalsize\hspace{1ex}\hrulefill}
\else
\subsection*{MaximumIntegerAttribute Class}
\fi
\label{ok_attributes.MaximumIntegerAttribute}
\index{MaximumIntegerAttribute}
\subsubsection*{\large{\textbf{Hierarchy}}\normalsize\hspace{1ex}\hfill}
MaximumIntegerAttribute {$>$} TCustomAttribute
\subsubsection*{\large{\textbf{Description}}\normalsize\hspace{1ex}\hfill}
Attribute class, with Attribute suffix, PasDoc should link to it too\subsubsection*{\large{\textbf{Methods}}\normalsize\hspace{1ex}\hfill}
\paragraph*{Create}\hspace*{\fill}

\label{ok_attributes.MaximumIntegerAttribute-Create}
\index{Create}
\begin{list}{}{
\settowidth{\tmplength}{\textbf{Description}}
\setlength{\itemindent}{0cm}
\setlength{\listparindent}{0cm}
\setlength{\leftmargin}{\evensidemargin}
\addtolength{\leftmargin}{\tmplength}
\settowidth{\labelsep}{X}
\addtolength{\leftmargin}{\labelsep}
\setlength{\labelwidth}{\tmplength}
}
\item[\textbf{Declaration}\hfill]
\ifpdf
\begin{flushleft}
\fi
\begin{ttfamily}
public constructor Create(const MaxInt: Integer; const AMessage: String);\end{ttfamily}

\ifpdf
\end{flushleft}
\fi

\end{list}
\ifpdf
\subsection*{\large{\textbf{TPerson Class}}\normalsize\hspace{1ex}\hrulefill}
\else
\subsection*{TPerson Class}
\fi
\label{ok_attributes.TPerson}
\index{TPerson}
\subsubsection*{\large{\textbf{Hierarchy}}\normalsize\hspace{1ex}\hfill}
TPerson {$>$} TObject
%%%%Description
\subsubsection*{\large{\textbf{Properties}}\normalsize\hspace{1ex}\hfill}
\begin{list}{}{
\settowidth{\tmplength}{\textbf{Name}}
\setlength{\itemindent}{0cm}
\setlength{\listparindent}{0cm}
\setlength{\leftmargin}{\evensidemargin}
\addtolength{\leftmargin}{\tmplength}
\settowidth{\labelsep}{X}
\addtolength{\leftmargin}{\labelsep}
\setlength{\labelwidth}{\tmplength}
}
\label{ok_attributes.TPerson-Name}
\index{Name}
\item[\textbf{Name}\hfill]
\ifpdf
\begin{flushleft}
\fi
\begin{ttfamily}
public property Name : String read FName write FName;\end{ttfamily}

\ifpdf
\end{flushleft}
\fi


\par  \label{ok_attributes.TPerson-Age}
\index{Age}
\item[\textbf{Age}\hfill]
\ifpdf
\begin{flushleft}
\fi
\begin{ttfamily}
public property Age : Integer read FAge write FAge;\end{ttfamily}

\ifpdf
\end{flushleft}
\fi


\par  \end{list}
\ifpdf
\subsection*{\large{\textbf{IUIContainer Interface}}\normalsize\hspace{1ex}\hrulefill}
\else
\subsection*{IUIContainer Interface}
\fi
\label{ok_attributes.IUIContainer}
\index{IUIContainer}
\subsubsection*{\large{\textbf{Hierarchy}}\normalsize\hspace{1ex}\hfill}
IUIContainer {$>$} IInterface
\subsubsection*{\large{\textbf{Description}}\normalsize\hspace{1ex}\hfill}
Test that GUIDs are handled gracefully\ifpdf
\subsection*{\large{\textbf{TMyClass1 Class}}\normalsize\hspace{1ex}\hrulefill}
\else
\subsection*{TMyClass1 Class}
\fi
\label{ok_attributes.TMyClass1}
\index{TMyClass1}
\subsubsection*{\large{\textbf{Hierarchy}}\normalsize\hspace{1ex}\hfill}
TMyClass1 {$>$} TObject
\subsubsection*{\large{\textbf{Description}}\normalsize\hspace{1ex}\hfill}
Tests from \href{https://github.com/pasdoc/pasdoc/issues/179}{https://github.com/pasdoc/pasdoc/issues/179}\subsubsection*{\large{\textbf{Fields}}\normalsize\hspace{1ex}\hfill}
\begin{list}{}{
\settowidth{\tmplength}{\textbf{FLockCount}}
\setlength{\itemindent}{0cm}
\setlength{\listparindent}{0cm}
\setlength{\leftmargin}{\evensidemargin}
\addtolength{\leftmargin}{\tmplength}
\settowidth{\labelsep}{X}
\addtolength{\leftmargin}{\labelsep}
\setlength{\labelwidth}{\tmplength}
}
\label{ok_attributes.TMyClass1-FLockCount}
\index{FLockCount}
\item[\textbf{FLockCount}\hfill]
\ifpdf
\begin{flushleft}
\fi
\begin{ttfamily}
public FLockCount: Integer;\end{ttfamily}

\ifpdf
\end{flushleft}
\fi


\par  \end{list}
\ifpdf
\subsection*{\large{\textbf{TMyClass2 Class}}\normalsize\hspace{1ex}\hrulefill}
\else
\subsection*{TMyClass2 Class}
\fi
\label{ok_attributes.TMyClass2}
\index{TMyClass2}
\subsubsection*{\large{\textbf{Hierarchy}}\normalsize\hspace{1ex}\hfill}
TMyClass2 {$>$} TObject
%%%%Description
\subsubsection*{\large{\textbf{Fields}}\normalsize\hspace{1ex}\hfill}
\begin{list}{}{
\settowidth{\tmplength}{\textbf{FLockCount}}
\setlength{\itemindent}{0cm}
\setlength{\listparindent}{0cm}
\setlength{\leftmargin}{\evensidemargin}
\addtolength{\leftmargin}{\tmplength}
\settowidth{\labelsep}{X}
\addtolength{\leftmargin}{\labelsep}
\setlength{\labelwidth}{\tmplength}
}
\label{ok_attributes.TMyClass2-FLockCount}
\index{FLockCount}
\item[\textbf{FLockCount}\hfill]
\ifpdf
\begin{flushleft}
\fi
\begin{ttfamily}
public var FLockCount: Integer;\end{ttfamily}

\ifpdf
\end{flushleft}
\fi


\par  \end{list}
\ifpdf
\subsection*{\large{\textbf{IEnumerator Interface}}\normalsize\hspace{1ex}\hrulefill}
\else
\subsection*{IEnumerator Interface}
\fi
\label{ok_attributes.IEnumerator}
\index{IEnumerator}
%%%%Description
\subsubsection*{\large{\textbf{Properties}}\normalsize\hspace{1ex}\hfill}
\begin{list}{}{
\settowidth{\tmplength}{\textbf{Current}}
\setlength{\itemindent}{0cm}
\setlength{\listparindent}{0cm}
\setlength{\leftmargin}{\evensidemargin}
\addtolength{\leftmargin}{\tmplength}
\settowidth{\labelsep}{X}
\addtolength{\leftmargin}{\labelsep}
\setlength{\labelwidth}{\tmplength}
}
\label{ok_attributes.IEnumerator-Current}
\index{Current}
\item[\textbf{Current}\hfill]
\ifpdf
\begin{flushleft}
\fi
\begin{ttfamily}
public property Current: T read GetCurrent;\end{ttfamily}

\ifpdf
\end{flushleft}
\fi


\par  \end{list}
\subsubsection*{\large{\textbf{Methods}}\normalsize\hspace{1ex}\hfill}
\paragraph*{GetCurrent}\hspace*{\fill}

\label{ok_attributes.IEnumerator-GetCurrent}
\index{GetCurrent}
\begin{list}{}{
\settowidth{\tmplength}{\textbf{Description}}
\setlength{\itemindent}{0cm}
\setlength{\listparindent}{0cm}
\setlength{\leftmargin}{\evensidemargin}
\addtolength{\leftmargin}{\tmplength}
\settowidth{\labelsep}{X}
\addtolength{\leftmargin}{\labelsep}
\setlength{\labelwidth}{\tmplength}
}
\item[\textbf{Declaration}\hfill]
\ifpdf
\begin{flushleft}
\fi
\begin{ttfamily}
public function GetCurrent: T;\end{ttfamily}

\ifpdf
\end{flushleft}
\fi

\end{list}
\ifpdf
\subsection*{\large{\textbf{TClassWithNested Class sealed}}\normalsize\hspace{1ex}\hrulefill}
\else
\subsection*{TClassWithNested Class sealed}
\fi
\label{ok_attributes.TClassWithNested}
\index{TClassWithNested}
\subsubsection*{\large{\textbf{Hierarchy}}\normalsize\hspace{1ex}\hfill}
TClassWithNested {$>$} TObject
\subsubsection*{\large{\textbf{Description}}\normalsize\hspace{1ex}\hfill}
Class with nested classes with attributes. This testcase is based on TParallel from Delphi RTL declaration.\end{document}
