
\begin{DoxyItemize}
\item infos = Information about type plugin is in keys below
\item infos/author = Markus Raab \href{mailto:elektra@libelektra.org}{\tt elektra@libelektra.\+org}
\item infos/licence = B\+S\+D
\item infos/provides = check
\item infos/needs =
\item infos/placements = presetstorage
\item infos/status = maintained unittest unfinished old
\item infos/metadata = check/type check/type/min check/type/max
\item infos/description =
\end{DoxyItemize}

This plugin is a type checker plugin using the {\ttfamily C\+O\+R\+B\+A} data types.

\subsection*{Additional Information}

A common and successful type system happens to be C\+O\+R\+B\+A with I\+D\+L. The system is outstanding because of the many mappings it provides to other programming languages.

The type checker plugin supports all basic C\+O\+R\+B\+A types\+: {\ttfamily short}, {\ttfamily unsigned\+\_\+short}, {\ttfamily long}, {\ttfamily unsigned\+\_\+long}, {\ttfamily long\+\_\+long}, {\ttfamily unsigned\+\_\+long\+\_\+long}, {\ttfamily float}, {\ttfamily double}, {\ttfamily char}, {\ttfamily boolean}, {\ttfamily any} and {\ttfamily octet}. In Elektra {\ttfamily octet} is the same as {\ttfamily char}. When checking any it will always be successful, regardless of the content. Elektra also added other types. {\ttfamily empty} will only yield true if there is no value. {\ttfamily string} allows any non-\/empty sequence of octets.

Sometimes the type should expresses that, for example, both an empty or another type is valid. In Elektra a space-\/separated list of types expresses that. If any of those types match, the whole type is valid. For example, the type {\ttfamily string empty} equals the type {\ttfamily any}. This facility builds a union of the sets of instances existing types specify.

{\ttfamily enum} works with a list of choices. Any of these choices confirms to the type, others do not. For example, the type F\+S\+Type accepts all file system names, for example, ext2, jfs or vfat.

The {\ttfamily C\+O\+R\+B\+A} type system goes far beyond these basic types. In I\+D\+L, it is also allowed to define classes, interfaces and generic containers. These user-\/defined types are however not useful on a single Key.

To sum up, many basic types like int or char are convenient and C\+O\+R\+B\+A ensures that they can be converted to the specific type of the programming language.

\subsection*{Restrictions}

The {\ttfamily C\+O\+R\+B\+A} type system also has its limits. The types {\ttfamily string} and {\ttfamily enum}, however, can be unsatisfactory. While string is too general and makes no limit on how the sequence of characters is structured, the enumeration is too finite. For example, it is not possible to say that a string is not allowed to have a specific symbol in it. 