\hypertarget{ebmlElementType_8h}{}\section{src/libebml\+\_\+ng/ebml\+Element\+Type.h File Reference}
\label{ebmlElementType_8h}\index{src/libebml\+\_\+ng/ebml\+Element\+Type.\+h@{src/libebml\+\_\+ng/ebml\+Element\+Type.\+h}}


Declaration of the E\+B\+ML element type base class and C\+R\+TP templates.  


{\ttfamily \#include \char`\"{}ptrs.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}seekdata.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}parsing/string.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}parsing/io.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}exceptions.\+h\char`\"{}}\newline
{\ttfamily \#include \char`\"{}vint.\+h\char`\"{}}\newline
{\ttfamily \#include $<$utility$>$}\newline
{\ttfamily \#include \char`\"{}typeof.\+h\char`\"{}}\newline
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \mbox{\hyperlink{classebml_1_1ebmlElementType}{ebml\+::ebml\+Element\+Type}}
\begin{DoxyCompactList}\small\item\em Abstract base class for E\+B\+ML Element Type objects. \end{DoxyCompactList}\item 
class \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$}}
\begin{DoxyCompactList}\small\item\em C\+R\+TP template for E\+B\+ML Element Type objects. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Namespaces}
\begin{DoxyCompactItemize}
\item 
 \mbox{\hyperlink{namespaceebml}{ebml}}
\end{DoxyCompactItemize}


\subsection{Detailed Description}
Declaration of the E\+B\+ML element type base class and C\+R\+TP templates. 

This header defines the abstract base class used to describe E\+B\+ML element types. Every subclass of ebml\+Element\+Type represents a distinct E\+B\+ML element type and must have a companion ebml\+Element (or subclass) declared as a friend. It provides functionality for constructing element type instances based on an E\+B\+ML ID (either as a V\+I\+NT string or an unsigned integer) and a name (as a wide string). The header also defines a C\+R\+TP template, ebml\+Type\+C\+R\+TP, that facilitates creation, decoding, and type-\/safe casting of concrete element instances.

\begin{DoxyNote}{Note}
Many member functions that perform trivial computations such as returning sizes or addresses are declared inline.
\end{DoxyNote}
\begin{DoxyAuthor}{Author}
Brian Sherson 
\end{DoxyAuthor}
\begin{DoxyDate}{Date}
September 11, 2025 
\end{DoxyDate}
