\hypertarget{classebml_1_1ebmlTypeCRTP}{}\section{ebml\+:\+:ebml\+Type\+C\+R\+TP$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$ Class Template Reference}
\label{classebml_1_1ebmlTypeCRTP}\index{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$@{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$}}


C\+R\+TP template for E\+B\+ML Element Type objects.  




{\ttfamily \#include $<$ebml\+Element\+Type.\+h$>$}

Inheritance diagram for ebml\+:\+:ebml\+Type\+C\+R\+TP$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=1.573034cm]{classebml_1_1ebmlTypeCRTP}
\end{center}
\end{figure}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
{\footnotesize template$<$typename... Args$>$ }\\\mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a1b0c67f5c2441c24b118358007915ee7}{ebml\+Type\+C\+R\+TP}} (Args \&\&... args)
\item 
{\footnotesize template$<$typename... Args$>$ }\\\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a19b9083de309dcfe34fe4c3177abc2ff}{operator()}} (Args \&\&... args) const
\begin{DoxyCompactList}\small\item\em Creates a new instance of an E\+B\+ML element. \end{DoxyCompactList}\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a83b98e1c2967737f782fd5228de4eb9e}{decode}} (const \mbox{\hyperlink{classebml_1_1parseString}{parse\+String}} \&parsed) const
\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_accddd1e6c31b7666bbb3c16bbd510211}{decode}} (const \mbox{\hyperlink{classebml_1_1parseFile}{parse\+File}} \&parsed) const
\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_ab85f2710d64918f15abd854a2fe508a5}{decode}} (const char $\ast$\mbox{\hyperlink{namespaceebml_a4edfd02f8910c0abfd4bbbf928f92d9e}{data}}, size\+\_\+t \mbox{\hyperlink{namespaceebml_a44e26fccb32167dfcce2a1a5d2d7b557}{size}}) const
\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a4a605fd07a5c36ab1b7b1589c55a28ce}{decode}} (const std\+::string \&\mbox{\hyperlink{namespaceebml_a4edfd02f8910c0abfd4bbbf928f92d9e}{data}}) const
\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a3d380bb7ea5f282c0cc33e68f8155230}{decode}} (\mbox{\hyperlink{classebml_1_1ioBase}{io\+Base}} \&file) const
\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_aa9fa32c6c464cbde3cd7fca27f6f2d08}{decode}} (\mbox{\hyperlink{classebml_1_1ioBase}{io\+Base}} \&file, off\+\_\+t \&offset) const
\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a54cc225680f30587c49259b0b8de57c4}{decode}} (\mbox{\hyperlink{classebml_1_1ioBase}{io\+Base}} \&file, off\+\_\+t offset, off\+\_\+t \&endoffset) const
\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a78debd5d133a471baeb7c8529d66d835}{cdecode}} (const \mbox{\hyperlink{classebml_1_1parseString}{parse\+String}} \&parsed) const
\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a2718d88adbcc5aafe5da0aaa369756f2}{cdecode}} (const \mbox{\hyperlink{classebml_1_1parseFile}{parse\+File}} \&parsed) const
\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a6b93ec3b77e223ec388e93b3a327925d}{cdecode}} (const char $\ast$\mbox{\hyperlink{namespaceebml_a4edfd02f8910c0abfd4bbbf928f92d9e}{data}}, size\+\_\+t \mbox{\hyperlink{namespaceebml_a44e26fccb32167dfcce2a1a5d2d7b557}{size}}) const
\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_ae94df9c0234ee3b9124aeab40ab2aff3}{cdecode}} (const std\+::string \&\mbox{\hyperlink{namespaceebml_a4edfd02f8910c0abfd4bbbf928f92d9e}{data}}) const
\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_ad347f6a98319da38bde35304bb246378}{cdecode}} (\mbox{\hyperlink{classebml_1_1ioBase}{io\+Base}} \&file) const
\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_ab3e3e6f9199ad07545bb3af0638ca898}{cdecode}} (\mbox{\hyperlink{classebml_1_1ioBase}{io\+Base}} \&file, off\+\_\+t \&offset) const
\item 
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a231d51fee5788d11b8407feb1cf7be5c}{cdecode}} (\mbox{\hyperlink{classebml_1_1ioBase}{io\+Base}} \&file, off\+\_\+t offset, off\+\_\+t \&endoffset) const
\end{DoxyCompactItemize}
\subsection*{Protected Member Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\hyperlink{classebml_1_1ebmlElement}{ebml\+Element}} $\ast$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a5b6c9d6175f6d1f40c5b72dd3821f1f4}{\+\_\+new}} () const
\item 
\mbox{\hyperlink{classebml_1_1ebmlElement}{ebml\+Element}} $\ast$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_aca1fc0022043540dfc8c130145eeea92}{\+\_\+decode\+\_\+v}} (const \mbox{\hyperlink{classebml_1_1parseString}{parse\+String}} \&) const
\item 
\mbox{\hyperlink{classebml_1_1ebmlElement}{ebml\+Element}} $\ast$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_ae0583193ebaad61a631467ebd6de3fc2}{\+\_\+decode\+\_\+v}} (const \mbox{\hyperlink{classebml_1_1parseFile}{parse\+File}} \&) const
\item 
\mbox{\hyperlink{classebml_1_1ebmlElement}{ebml\+Element}} $\ast$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a2af0b677bdb2d4e8f531a84c832f2f69}{\+\_\+cdecode\+\_\+v}} (const \mbox{\hyperlink{classebml_1_1parseString}{parse\+String}} \&) const
\item 
\mbox{\hyperlink{classebml_1_1ebmlElement}{ebml\+Element}} $\ast$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a31bee6d15b4ad23d0a3ffc63c5939448}{\+\_\+cdecode\+\_\+v}} (const \mbox{\hyperlink{classebml_1_1parseFile}{parse\+File}} \&) const
\end{DoxyCompactItemize}


\subsection{Detailed Description}
\subsubsection*{template$<$typename ebmltype\+\_\+t, typename ebmlinst\+\_\+t, typename typebase\+\_\+t = ebml\+Element\+Type$>$\newline
class ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$}

C\+R\+TP template for E\+B\+ML Element Type objects. 

This template implements the Curiously Recurring Template Pattern (C\+R\+TP) to enhance E\+B\+ML element type classes. By wrapping their {\ttfamily decode} and {\ttfamily cdecode} functions, it provides type-\/safe pointer conversions, eliminating the need for manual recasting.

\subsubsection*{Benefits and Design Rationale}

By inheriting from {\ttfamily \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+Type\+C\+R\+TP}}}, derived E\+B\+ML element type classes receive\+:
\begin{DoxyItemize}
\item Type-\/safe instance creation through {\ttfamily operator()(Args\&\&...)}
\item Automatic conversion of pointer types in decoding functions, returning\+:
\item {\ttfamily \mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ebmlinst\+\_\+t$>$} for mutable instances
\item {\ttfamily \mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$const ebmlinst\+\_\+t$>$} for const instances
\end{DoxyItemize}

\begin{DoxySeeAlso}{See also}
\mbox{\hyperlink{crtp_usage}{Using the C\+R\+TP Mixins}} for detailed usage instructions. 

{\ttfamily \mbox{\hyperlink{classebml_1_1ebmlElementCRTP}{ebml\+::ebml\+Element\+C\+R\+TP}}$<$ebmltype\+\_\+t, ebmlinst\+\_\+t, instbase\+\_\+t$>$} 

\mbox{\hyperlink{classebml_1_1ebmlElementType}{ebml\+::ebml\+Element\+Type}}
\end{DoxySeeAlso}

\begin{DoxyTemplParams}{Template Parameters}
{\em ebmltype\+\_\+t} & The concrete element type class using this C\+R\+TP mixin. \\
\hline
{\em ebmlinst\+\_\+t} & The associated concrete element instance class. \\
\hline
{\em typebase\+\_\+t} & The base element type class (default is {\ttfamily \mbox{\hyperlink{classebml_1_1ebmlElementType}{ebml\+::ebml\+Element\+Type}}}).\\
\hline
\end{DoxyTemplParams}
\begin{DoxyAuthor}{Author}
Brian Sherson 
\end{DoxyAuthor}
\begin{DoxyDate}{Date}
9/12/2025 
\end{DoxyDate}


\subsection{Constructor \& Destructor Documentation}
\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_a1b0c67f5c2441c24b118358007915ee7}\label{classebml_1_1ebmlTypeCRTP_a1b0c67f5c2441c24b118358007915ee7}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!ebml\+Type\+C\+R\+TP@{ebml\+Type\+C\+R\+TP}}
\index{ebml\+Type\+C\+R\+TP@{ebml\+Type\+C\+R\+TP}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{ebml\+Type\+C\+R\+T\+P()}{ebmlTypeCRTP()}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t, typename ebmlinst\+\_\+t, typename typebase\+\_\+t = ebml\+Element\+Type$>$ \\
template$<$typename... Args$>$ \\
\mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::\mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+Type\+C\+R\+TP}} (\begin{DoxyParamCaption}\item[{Args \&\&...}]{args }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}}



\subsection{Member Function Documentation}
\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_a2af0b677bdb2d4e8f531a84c832f2f69}\label{classebml_1_1ebmlTypeCRTP_a2af0b677bdb2d4e8f531a84c832f2f69}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!\+\_\+cdecode\+\_\+v@{\+\_\+cdecode\+\_\+v}}
\index{\+\_\+cdecode\+\_\+v@{\+\_\+cdecode\+\_\+v}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{\+\_\+cdecode\+\_\+v()}{\_cdecode\_v()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t, typename ebmlinst\+\_\+t, typename typebase\+\_\+t = ebml\+Element\+Type$>$ \\
\mbox{\hyperlink{classebml_1_1ebmlElement}{ebml\+Element}}$\ast$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::\+\_\+cdecode\+\_\+v (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classebml_1_1parseString}{parse\+String}} \&}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [protected]}}



Reimplemented in \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a2af0b677bdb2d4e8f531a84c832f2f69}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Pair\+Type$<$ const K, V $>$, ebml\+Pair$<$ const K, V $>$, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a2af0b677bdb2d4e8f531a84c832f2f69}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Lazy\+Load\+Type, ebml\+Lazy\+Load, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a2af0b677bdb2d4e8f531a84c832f2f69}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Pair\+Type$<$ K, V $>$, ebml\+Pair$<$ K, V $>$, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a2af0b677bdb2d4e8f531a84c832f2f69}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Struct\+Type, ebml\+Struct, ebml\+Master\+Element\+Type $>$}}, and \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a2af0b677bdb2d4e8f531a84c832f2f69}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+List\+Type, ebml\+List, ebml\+Master\+Element\+Type $>$}}.

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_a31bee6d15b4ad23d0a3ffc63c5939448}\label{classebml_1_1ebmlTypeCRTP_a31bee6d15b4ad23d0a3ffc63c5939448}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!\+\_\+cdecode\+\_\+v@{\+\_\+cdecode\+\_\+v}}
\index{\+\_\+cdecode\+\_\+v@{\+\_\+cdecode\+\_\+v}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{\+\_\+cdecode\+\_\+v()}{\_cdecode\_v()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t, typename ebmlinst\+\_\+t, typename typebase\+\_\+t = ebml\+Element\+Type$>$ \\
\mbox{\hyperlink{classebml_1_1ebmlElement}{ebml\+Element}}$\ast$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::\+\_\+cdecode\+\_\+v (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classebml_1_1parseFile}{parse\+File}} \&}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [protected]}}



Reimplemented in \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a31bee6d15b4ad23d0a3ffc63c5939448}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Pair\+Type$<$ const K, V $>$, ebml\+Pair$<$ const K, V $>$, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a31bee6d15b4ad23d0a3ffc63c5939448}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Lazy\+Load\+Type, ebml\+Lazy\+Load, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a31bee6d15b4ad23d0a3ffc63c5939448}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Pair\+Type$<$ K, V $>$, ebml\+Pair$<$ K, V $>$, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a31bee6d15b4ad23d0a3ffc63c5939448}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Struct\+Type, ebml\+Struct, ebml\+Master\+Element\+Type $>$}}, and \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a31bee6d15b4ad23d0a3ffc63c5939448}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+List\+Type, ebml\+List, ebml\+Master\+Element\+Type $>$}}.

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_aca1fc0022043540dfc8c130145eeea92}\label{classebml_1_1ebmlTypeCRTP_aca1fc0022043540dfc8c130145eeea92}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!\+\_\+decode\+\_\+v@{\+\_\+decode\+\_\+v}}
\index{\+\_\+decode\+\_\+v@{\+\_\+decode\+\_\+v}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{\+\_\+decode\+\_\+v()}{\_decode\_v()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t, typename ebmlinst\+\_\+t, typename typebase\+\_\+t = ebml\+Element\+Type$>$ \\
\mbox{\hyperlink{classebml_1_1ebmlElement}{ebml\+Element}}$\ast$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::\+\_\+decode\+\_\+v (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classebml_1_1parseString}{parse\+String}} \&}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [protected]}}



Reimplemented in \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_aca1fc0022043540dfc8c130145eeea92}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Pair\+Type$<$ const K, V $>$, ebml\+Pair$<$ const K, V $>$, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_aca1fc0022043540dfc8c130145eeea92}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Lazy\+Load\+Type, ebml\+Lazy\+Load, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_aca1fc0022043540dfc8c130145eeea92}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Pair\+Type$<$ K, V $>$, ebml\+Pair$<$ K, V $>$, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_aca1fc0022043540dfc8c130145eeea92}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Struct\+Type, ebml\+Struct, ebml\+Master\+Element\+Type $>$}}, and \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_aca1fc0022043540dfc8c130145eeea92}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+List\+Type, ebml\+List, ebml\+Master\+Element\+Type $>$}}.

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_ae0583193ebaad61a631467ebd6de3fc2}\label{classebml_1_1ebmlTypeCRTP_ae0583193ebaad61a631467ebd6de3fc2}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!\+\_\+decode\+\_\+v@{\+\_\+decode\+\_\+v}}
\index{\+\_\+decode\+\_\+v@{\+\_\+decode\+\_\+v}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{\+\_\+decode\+\_\+v()}{\_decode\_v()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t, typename ebmlinst\+\_\+t, typename typebase\+\_\+t = ebml\+Element\+Type$>$ \\
\mbox{\hyperlink{classebml_1_1ebmlElement}{ebml\+Element}}$\ast$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::\+\_\+decode\+\_\+v (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classebml_1_1parseFile}{parse\+File}} \&}]{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [protected]}}



Reimplemented in \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_ae0583193ebaad61a631467ebd6de3fc2}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Pair\+Type$<$ const K, V $>$, ebml\+Pair$<$ const K, V $>$, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_ae0583193ebaad61a631467ebd6de3fc2}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Lazy\+Load\+Type, ebml\+Lazy\+Load, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_ae0583193ebaad61a631467ebd6de3fc2}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Pair\+Type$<$ K, V $>$, ebml\+Pair$<$ K, V $>$, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_ae0583193ebaad61a631467ebd6de3fc2}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Struct\+Type, ebml\+Struct, ebml\+Master\+Element\+Type $>$}}, and \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_ae0583193ebaad61a631467ebd6de3fc2}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+List\+Type, ebml\+List, ebml\+Master\+Element\+Type $>$}}.

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_a5b6c9d6175f6d1f40c5b72dd3821f1f4}\label{classebml_1_1ebmlTypeCRTP_a5b6c9d6175f6d1f40c5b72dd3821f1f4}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!\+\_\+new@{\+\_\+new}}
\index{\+\_\+new@{\+\_\+new}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{\+\_\+new()}{\_new()}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t, typename ebmlinst\+\_\+t, typename typebase\+\_\+t = ebml\+Element\+Type$>$ \\
\mbox{\hyperlink{classebml_1_1ebmlElement}{ebml\+Element}}$\ast$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::\+\_\+new (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [protected]}}



Reimplemented in \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a5b6c9d6175f6d1f40c5b72dd3821f1f4}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Pair\+Type$<$ const K, V $>$, ebml\+Pair$<$ const K, V $>$, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a5b6c9d6175f6d1f40c5b72dd3821f1f4}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Lazy\+Load\+Type, ebml\+Lazy\+Load, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a5b6c9d6175f6d1f40c5b72dd3821f1f4}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Pair\+Type$<$ K, V $>$, ebml\+Pair$<$ K, V $>$, ebml\+Master\+Element\+Type $>$}}, \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a5b6c9d6175f6d1f40c5b72dd3821f1f4}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+Struct\+Type, ebml\+Struct, ebml\+Master\+Element\+Type $>$}}, and \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP_a5b6c9d6175f6d1f40c5b72dd3821f1f4}{ebml\+::ebml\+Type\+C\+R\+T\+P$<$ ebml\+List\+Type, ebml\+List, ebml\+Master\+Element\+Type $>$}}.

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_a78debd5d133a471baeb7c8529d66d835}\label{classebml_1_1ebmlTypeCRTP_a78debd5d133a471baeb7c8529d66d835}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!cdecode@{cdecode}}
\index{cdecode@{cdecode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{cdecode()}{cdecode()}\hspace{0.1cm}{\footnotesize\ttfamily [1/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::cdecode (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classebml_1_1parseString}{parse\+String}} \&}]{parsed }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_a2718d88adbcc5aafe5da0aaa369756f2}\label{classebml_1_1ebmlTypeCRTP_a2718d88adbcc5aafe5da0aaa369756f2}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!cdecode@{cdecode}}
\index{cdecode@{cdecode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{cdecode()}{cdecode()}\hspace{0.1cm}{\footnotesize\ttfamily [2/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::cdecode (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classebml_1_1parseFile}{parse\+File}} \&}]{parsed }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_a6b93ec3b77e223ec388e93b3a327925d}\label{classebml_1_1ebmlTypeCRTP_a6b93ec3b77e223ec388e93b3a327925d}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!cdecode@{cdecode}}
\index{cdecode@{cdecode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{cdecode()}{cdecode()}\hspace{0.1cm}{\footnotesize\ttfamily [3/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::cdecode (\begin{DoxyParamCaption}\item[{const char $\ast$}]{data,  }\item[{size\+\_\+t}]{size }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_ae94df9c0234ee3b9124aeab40ab2aff3}\label{classebml_1_1ebmlTypeCRTP_ae94df9c0234ee3b9124aeab40ab2aff3}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!cdecode@{cdecode}}
\index{cdecode@{cdecode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{cdecode()}{cdecode()}\hspace{0.1cm}{\footnotesize\ttfamily [4/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::cdecode (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{data }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_ad347f6a98319da38bde35304bb246378}\label{classebml_1_1ebmlTypeCRTP_ad347f6a98319da38bde35304bb246378}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!cdecode@{cdecode}}
\index{cdecode@{cdecode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{cdecode()}{cdecode()}\hspace{0.1cm}{\footnotesize\ttfamily [5/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::cdecode (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classebml_1_1ioBase}{io\+Base}} \&}]{file }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_ab3e3e6f9199ad07545bb3af0638ca898}\label{classebml_1_1ebmlTypeCRTP_ab3e3e6f9199ad07545bb3af0638ca898}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!cdecode@{cdecode}}
\index{cdecode@{cdecode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{cdecode()}{cdecode()}\hspace{0.1cm}{\footnotesize\ttfamily [6/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::cdecode (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classebml_1_1ioBase}{io\+Base}} \&}]{file,  }\item[{off\+\_\+t \&}]{offset }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_a231d51fee5788d11b8407feb1cf7be5c}\label{classebml_1_1ebmlTypeCRTP_a231d51fee5788d11b8407feb1cf7be5c}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!cdecode@{cdecode}}
\index{cdecode@{cdecode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{cdecode()}{cdecode()}\hspace{0.1cm}{\footnotesize\ttfamily [7/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ const ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::cdecode (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classebml_1_1ioBase}{io\+Base}} \&}]{file,  }\item[{off\+\_\+t}]{offset,  }\item[{off\+\_\+t \&}]{endoffset }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_a83b98e1c2967737f782fd5228de4eb9e}\label{classebml_1_1ebmlTypeCRTP_a83b98e1c2967737f782fd5228de4eb9e}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!decode@{decode}}
\index{decode@{decode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{decode()}{decode()}\hspace{0.1cm}{\footnotesize\ttfamily [1/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::decode (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classebml_1_1parseString}{parse\+String}} \&}]{parsed }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_accddd1e6c31b7666bbb3c16bbd510211}\label{classebml_1_1ebmlTypeCRTP_accddd1e6c31b7666bbb3c16bbd510211}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!decode@{decode}}
\index{decode@{decode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{decode()}{decode()}\hspace{0.1cm}{\footnotesize\ttfamily [2/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::decode (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classebml_1_1parseFile}{parse\+File}} \&}]{parsed }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_ab85f2710d64918f15abd854a2fe508a5}\label{classebml_1_1ebmlTypeCRTP_ab85f2710d64918f15abd854a2fe508a5}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!decode@{decode}}
\index{decode@{decode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{decode()}{decode()}\hspace{0.1cm}{\footnotesize\ttfamily [3/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::decode (\begin{DoxyParamCaption}\item[{const char $\ast$}]{data,  }\item[{size\+\_\+t}]{size }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_a4a605fd07a5c36ab1b7b1589c55a28ce}\label{classebml_1_1ebmlTypeCRTP_a4a605fd07a5c36ab1b7b1589c55a28ce}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!decode@{decode}}
\index{decode@{decode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{decode()}{decode()}\hspace{0.1cm}{\footnotesize\ttfamily [4/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::decode (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{data }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_a3d380bb7ea5f282c0cc33e68f8155230}\label{classebml_1_1ebmlTypeCRTP_a3d380bb7ea5f282c0cc33e68f8155230}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!decode@{decode}}
\index{decode@{decode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{decode()}{decode()}\hspace{0.1cm}{\footnotesize\ttfamily [5/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::decode (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classebml_1_1ioBase}{io\+Base}} \&}]{file }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_aa9fa32c6c464cbde3cd7fca27f6f2d08}\label{classebml_1_1ebmlTypeCRTP_aa9fa32c6c464cbde3cd7fca27f6f2d08}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!decode@{decode}}
\index{decode@{decode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{decode()}{decode()}\hspace{0.1cm}{\footnotesize\ttfamily [6/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::decode (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classebml_1_1ioBase}{io\+Base}} \&}]{file,  }\item[{off\+\_\+t \&}]{offset }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_a54cc225680f30587c49259b0b8de57c4}\label{classebml_1_1ebmlTypeCRTP_a54cc225680f30587c49259b0b8de57c4}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!decode@{decode}}
\index{decode@{decode}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{decode()}{decode()}\hspace{0.1cm}{\footnotesize\ttfamily [7/7]}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::decode (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classebml_1_1ioBase}{io\+Base}} \&}]{file,  }\item[{off\+\_\+t}]{offset,  }\item[{off\+\_\+t \&}]{endoffset }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}

\mbox{\Hypertarget{classebml_1_1ebmlTypeCRTP_a19b9083de309dcfe34fe4c3177abc2ff}\label{classebml_1_1ebmlTypeCRTP_a19b9083de309dcfe34fe4c3177abc2ff}} 
\index{ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}!operator()@{operator()}}
\index{operator()@{operator()}!ebml\+::ebml\+Type\+C\+R\+TP@{ebml\+::ebml\+Type\+C\+R\+TP}}
\subsubsection{\texorpdfstring{operator()()}{operator()()}}
{\footnotesize\ttfamily template$<$typename ebmltype\+\_\+t , typename ebmlinst\+\_\+t , typename typebase\+\_\+t $>$ \\
template$<$typename... Args$>$ \\
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr}}$<$ ebmlinst\+\_\+t $>$ \mbox{\hyperlink{classebml_1_1ebmlTypeCRTP}{ebml\+::ebml\+Type\+C\+R\+TP}}$<$ ebmltype\+\_\+t, ebmlinst\+\_\+t, typebase\+\_\+t $>$\+::operator() (\begin{DoxyParamCaption}\item[{Args \&\&...}]{args }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}}



Creates a new instance of an E\+B\+ML element. 

This operator wraps around the constructor of {\ttfamily ebmlinst\+\_\+t} of the form {\ttfamily ebmlinst\+\_\+t(const ebmltype\+\_\+t$\ast$, Args\&\&...)}, forwarding the provided arguments, validating the created instance, and returning a shared pointer to the new element.


\begin{DoxyTemplParams}{Template Parameters}
{\em ebmltype\+\_\+t} & The concrete E\+B\+ML element type class. \\
\hline
{\em ebmlinst\+\_\+t} & The concrete E\+B\+ML element instance class. \\
\hline
{\em typebase\+\_\+t} & The base element type class. \\
\hline
{\em Args} & Arguments to be forwarded to the constructor of ebmlinst\+\_\+t. \\
\hline
\end{DoxyTemplParams}

\begin{DoxyParams}{Parameters}
{\em args} & The arguments to forward. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\mbox{\hyperlink{namespaceebml_a390a3cc4808943a10d4a6f1f912afaba}{ebml\+::ptr$<$ebmlinst\+\_\+t$>$}} A shared pointer to the created E\+B\+ML element instance. 
\end{DoxyReturn}


The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
src/libebml\+\_\+ng/\mbox{\hyperlink{ebmlElementType_8h}{ebml\+Element\+Type.\+h}}\end{DoxyCompactItemize}
